LongRangeSet (@NotNull LongRangeSet left, @NotNull LongRangeSet right, LongRangeType lrType) { return switch (this) { case PLUS -> left.plus(right, lrType); case MINUS -> left.minus(right, lrType); case AND -> left.bitwiseAnd(right); case OR -> left.bitwiseOr(right, lrType); case XOR -> left.bitwiseXor(right, lrType); case MUL -> left.mul(right, lrType); case MOD -> left.mod(right); case DIV -> left.div(right, lrType); case SHL -> left.shiftLeft(right, lrType); case SHR -> left.shiftRight(right, lrType); case USHR -> left.unsignedShiftRight(right, lrType); }; }