このクラスは列挙を定義していて、列挙の等価性はオブジェクト同一性を使用して定義されています。 列挙値のために共変な equals メソッドを定義することは、非常に間違ったプラクティスです。 2つの異なる列挙値が通常の equals メソッドでは「等価ではない」と判定され、共変な equals メソッドでは「等価」と判定されるからです。 共変な equals メソッドを定義しないでください。