public interface Either { A a(); bool isA(); B b(); bool isB(); Either fmap (System.Func f, Either e); }