return (Class) collectionValueType;
} else if(collectionValueType instanceof ParameterizedType) {
ParameterizedType type = (ParameterizedType) collectionValueType;
return type.getRawType();
} else if(collectionValueType instanceof WildcardType) {
throw new UnusableTypeException("we can't infer element type in widlcard type "+collectionType.toString());
} else if(collectionValueType instanceof TypeVariable) {
throw new UnusableTypeException("we can't infer element type in type variable "+collectionType.toString());
}
} else if(collectionType instanceof WildcardType) {
throw new UnusableTypeException("we can't infer element type in widlcard type "+collectionType.toString());
} else if(collectionType instanceof TypeVariable) {
throw new UnusableTypeException("we can't infer element type in type variable "+collectionType.toString());
}
throw new UnusableTypeException("we can't infer element type in "+collectionType.toString());
}