static void TestThisOrOther(IThis <IOther> param)
 {
     param.doThis();
     param.Self.doOther();
 }
 static void TestThisOrThat(IThis <IThat> param)
 {
     param.doThis();
     param.Self.doThat();
 }