enum ChessPiece { PAWN { Set<Position> reachable(Position current) { return ChessRules.pawnReachable(current); } }; abstract Set<Position> reachable(Position current); }