private static object GenerateCollection(Type collectionType, int size,
Dictionary<Type, object> createdObjectReferences) {
var type = collectionType.IsGenericType
? collectionType.GetGenericArguments()[0]
: typeof (object);
var result = Activator.CreateInstance(collectionType);
var addMethod = collectionType.GetMethod("Add");
var areAllElementsNull = true;
var objectGenerator = new ObjectGenerator();
for (var i = 0; i < size; i++)
{
var element = objectGenerator.GenerateObject(type, createdObjectReferences);
addMethod.Invoke(result, new[] {element});
areAllElementsNull &= element == null;
}
if (areAllElementsNull)
{
return null;
}
return result;
}