public class Group<T> : IWrappableGroup<WrapperGroup<T>> {}
public class WrapperElement<T> {}
public interface IWrappableGroup<U> {}
public class WrapperGroup<T> : Group<WrapperElement<T>> {}
class MainClass {
public static void Main(string[] args){
var ng = new Group<object>();
}
}
cHVibGljIGNsYXNzIEdyb3VwPFQ+IDogSVdyYXBwYWJsZUdyb3VwPFdyYXBwZXJHcm91cDxUPj4ge30KCnB1YmxpYyBjbGFzcyBXcmFwcGVyRWxlbWVudDxUPiB7fQoKcHVibGljIGludGVyZmFjZSBJV3JhcHBhYmxlR3JvdXA8VT4ge30KCnB1YmxpYyBjbGFzcyBXcmFwcGVyR3JvdXA8VD4gOiBHcm91cDxXcmFwcGVyRWxlbWVudDxUPj4ge30KCmNsYXNzIE1haW5DbGFzcyB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKXsKICAgICAgICB2YXIgbmcgPSBuZXcgR3JvdXA8b2JqZWN0PigpOwogICAgfQp9Cg==