in google-http-client/src/main/java/com/google/api/client/util/Data.java [464:488]
public static Collection<Object> newCollectionInstance(Type type) {
if (type instanceof WildcardType) {
type = Types.getBound((WildcardType) type);
}
if (type instanceof ParameterizedType) {
type = ((ParameterizedType) type).getRawType();
}
Class<?> collectionClass = type instanceof Class<?> ? (Class<?>) type : null;
if (type == null || type instanceof GenericArrayType || collectionClass != null
&& (collectionClass.isArray() || collectionClass.isAssignableFrom(ArrayList.class))) {
return new ArrayList<Object>();
}
if (collectionClass == null) {
throw new IllegalArgumentException("unable to create new instance of type: " + type);
}
if (collectionClass.isAssignableFrom(HashSet.class)) {
return new HashSet<Object>();
}
if (collectionClass.isAssignableFrom(TreeSet.class)) {
return new TreeSet<Object>();
}
@SuppressWarnings("unchecked")
Collection<Object> result = (Collection<Object>) Types.newInstance(collectionClass);
return result;
}