enum UpDown { up(true), down(false); bool bit; private *(bool *bit) {} static UpDown fromBool(bool bit) { ret bit ? up : down; } bool isUp() { ret bit; } bool isDown() { ret !bit; } int direction() { ret isUp() ? 1 : -1; } }