using System;
using System.Collections.Generic;

internal delegate void EmptyDelegate ();

class BaseObject
{
	public static int Main ()
	{
		int? i;
		Query <BaseObject> (out i);
		return 0;
	}

	static void Closure (EmptyDelegate x)
	{
	}

	static List<T> Query<T> (out int? count)  where T : BaseObject
	{
		count = 0;
		List<T> results = new List<T> ();
		Closure (delegate {
			results.Add (MakeSomething<T> ());
		});
		return results;
	}

	static T MakeSomething<T> () where T : BaseObject
	{
		return null;
	}
}