using System.Collections.Generic; public class Blah { public class WrapperWrapper { public readonly Wrapper Wrapper; public WrapperWrapper () : this (Wrapper.Empty) { } protected WrapperWrapper (Wrapper val) { Wrapper = val; } public WrapperWrapper NewWrapperWrapper (Wrapper val) { return new WrapperWrapper (val); } } } public class Wrapper { public static Wrapper Empty = new Wrapper (default (U)); private Wrapper (U u) { } } public class C { public static int Main () { var r = new Blah.WrapperWrapper().NewWrapperWrapper (Wrapper.Empty); if (r == null) return 1; return 0; } }