static class YN { Y yes; // invariant: !sYes => (yes == null) N no; // invariant: isYes => (no == null) bool isYes; *() {} *(bool *isYes) {} *(bool *isYes, Y *yes) {} *(bool *isYes, Y *yes, N *no) {} }