private boolean correctRelatedValues(@NotNull DfaValue value, @NotNull DfType type) {
    EqClass eqClass = getEqClass(value);
    if (eqClass == null) return true;
    if (type.fromRelation(RelationType.GT) == DfType.TOP && type.fromRelation(RelationType.LT) == DfType.TOP) return true;
    DistinctPairSet distinctPairs = myDistinctClasses;
    myDistinctClasses = new DistinctPairSet(this);
    try {
      for (DistinctPairSet.DistinctPair pair : distinctPairs) {
        if (pair.isOrdered()) {
          if (pair.getFirst() == eqClass) {
            DfaVariableValue var = Objects.requireNonNull(pair.getSecond().getCanonicalVariable());
            if (!meetDfType(var, getDfType(var).meetRelation(RelationType.GT, type))) return false;
          }
          else if (pair.getSecond() == eqClass) {
            DfaVariableValue var = Objects.requireNonNull(pair.getFirst().getCanonicalVariable());
            if (!meetDfType(var, getDfType(var).meetRelation(RelationType.LT, type))) return false;
          }
        }
      }
    }
    finally {
      myDistinctClasses = distinctPairs;
    }
    return true;
  }
private boolean correctRelatedValues(@NotNull DfaValue value, @NotNull DfType type)