@Override
  protected boolean meetVariableType(@NotNull DfaVariableValue var,
                                     @NotNull DfType originalType,
                                     @NotNull DfType newType) {
    TypeConstraint newConstraint = TypeConstraint.fromDfType(newType);
    if (newConstraint.isComparedByEquals() && !newConstraint.equals(TypeConstraint.fromDfType(originalType))) {
      // Type is narrowed to java.lang.String, java.lang.Integer, etc.: we consider String & boxed types
      // equivalence by content, but other object types by reference, so we need to remove distinct pairs, if any.
      convertReferenceEqualityToValueEquality(var);
    }
    return super.meetVariableType(var, originalType, newType);
  }
@Override
  protected boolean meetVariableType(@NotNull DfaVariableValue var,
                                     @NotNull DfType originalType,
                                     @NotNull DfType newType)