private static object GenerateQueryable(Type queryableType, int size,
Dictionary<Type, object> createdObjectReferences) {
var isGeneric = queryableType.IsGenericType;
object list;
if (isGeneric)
{
var listType = typeof (List<>).MakeGenericType(queryableType.GetGenericArguments());
list = GenerateCollection(listType, size, createdObjectReferences);
}
else
{
list = GenerateArray(typeof (object[]), size, createdObjectReferences);
}
if (list == null)
{
return null;
}
if (isGeneric)
{
var argumentType = typeof (IEnumerable<>).MakeGenericType(queryableType.GetGenericArguments());
var asQueryableMethod = typeof (Queryable).GetMethod("AsQueryable", new[] {argumentType});
return asQueryableMethod.Invoke(null, new[] {list});
}
return ((IEnumerable) list).AsQueryable();
}