enum FlippableMember {
A(Flippable.A), B(Flippable.B), Y(Flippable.Y), Z(Flippable.Z);
private final Flippable value;
private FlippableMember(Flippable value) {
this.value = value;
}
public Flippable value() {
return value;
}
}
enum Flippable {
A (FlippableMember.Z), B (FlippableMember.Y), Y (FlippableMember.B), Z (FlippableMember.A);
private final Flippable opposite;
private Flippable(FlippableMember opposite) {
this.opposite = opposite.value();
}
public Flippable flip() {