using System;
using System.Collections.Generic;

public class Foo<T>
{
	public abstract class Node
	{ }

	public class ConcatNode : Node
	{ }

	public Node GetRoot ()
	{
		return new ConcatNode ();
	}

	public void Test (Node root)
	{
		ConcatNode concat = root as ConcatNode;
		Console.WriteLine (concat);
	}
}

class X
{
	public static void Main ()
	{
		Foo<int> foo = new Foo<int> ();
		Foo<int>.Node root = foo.GetRoot ();
		foo.Test (root);
	}
}