public class CallSite { public static bool CompareVirtual(Source s, T a, T b) { return a < b; } public static bool CompareDirect(Source s, int a, int b) { return a > b; } } public class Source { public virtual bool operator <(T a, T b) { return false; } public bool operator >(T a, T b) { return false; } }