public static void Main()
public sealed class AbstractionTester
internal static void Run()
Func<A, bool> func = a =>
internal interface ICallMe<T>
public abstract class MyEntity
public abstract class A : MyEntity, ICallMe<A>
Console.WriteLine("Error");
public class B : A, ICallMe<B>
public class C : A, ICallMe<C>