return getErasure(arrayType.getGenericComponentType());
} else if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType)type;
return getErasure(pType.getRawType());
} else if (type instanceof WildcardType) {
WildcardType wType = (WildcardType)type;
Type[] types = wType.getUpperBounds();
return getErasure(types[0]);
} else if (type instanceof TypeVariable) {
TypeVariable var = (TypeVariable)type;
Type[] types = var.getBounds();
return getErasure(types[0]);