C# の Generics の文法がワケワカメ

こんなんでベースクラスの方がアクセシビリティが低いと怒られる。

class HogeDocument
{
}

public abstract class Stringizer<Type>
{
	public abstract string Stringize(Type target);
}

public class HogeDocumentListStringizer : Stringizer<HogeDocument>
{
	public override string Stringize(HogeDocument target)
	{
		return "<<" + target.ToString() + ">>";
	}
}


なんでだ?
ちなみに Generic じゃなくすれば通る

class HogeDocument
{
}

public abstract class Stringizer
{
	public abstract string Stringize(object target);
}

public class HogeDocumentListStringizer : Stringizer
{
	public override string Stringize(object target)
	{
		string result = "";
			
		HogeDocument hogeDocument = target as HogeDocument;
		if (hogeDocument != null)
		{
			result = "<<" + target.ToString() + ">>";
		}

		return result;
	}
}


C++ Template の荒々しさが懐かしいw