private static @Nullable PsiField getComparedField(PsiExpression operand, PsiVariable that) {
    operand = PsiUtil.skipParenthesizedExprDown(operand);
    if (operand instanceof PsiMethodCallExpression call) {
      if (OBJECTS_EQUALS.test(call)) {
        PsiExpression[] expressions = call.getArgumentList().getExpressions();
        return getField(expressions[0], expressions[1], that);
      }
    }
    if (operand instanceof PsiBinaryExpression binOp && binOp.getOperationTokenType().equals(JavaTokenType.EQEQ)) {
      PsiExpression lOperand = binOp.getLOperand();
      PsiExpression rOperand = binOp.getROperand();
      PsiField field = getField(lOperand, rOperand, that);
      if (field != null) {
        PsiType type = field.getType();
        if (type instanceof PsiPrimitiveType && !TypeConversionUtil.isFloatOrDoubleType(type)) return field;
      }
      if (lOperand instanceof PsiMethodCallExpression lCall &&
          rOperand instanceof PsiMethodCallExpression rCall &&
          BITS.test(lCall) && BITS.test(rCall)) {
        field = getField(lCall.getArgumentList().getExpressions()[0], rCall.getArgumentList().getExpressions()[0], that);
        if (field != null) {
          PsiType type = field.getType();
          if (type instanceof PsiPrimitiveType && TypeConversionUtil.isFloatOrDoubleType(type)) return field;
        }
      }
    }
    return null;
  }
private static @Nullable PsiField getComparedField(PsiExpression operand, PsiVariable that)