@Nullable
  private static Equation outEquation(boolean exception, Member member, BasicValue returnValue, boolean stable) {
    final EKey key = new EKey(member, Out, stable);
    final Result result;
    if (exception) {
      result = Value.Bot;
    }
    else if (FalseValue == returnValue) {
      result = Value.False;
    }
    else if (TrueValue == returnValue) {
      result = Value.True;
    }
    else if (returnValue instanceof TrackableNullValue) {
      result = Value.Null;
    }
    else if (returnValue instanceof NotNullValue || returnValue == ThisValue) {
      result = Value.NotNull;
    }
    else if (returnValue instanceof TrackableCallValue call) {
      EKey callKey = new EKey(call.method, Out, call.stableCall);
      Set<EKey> keys = Collections.singleton(callKey);
      result = new Pending(Collections.singleton(new Component(Value.Top, keys)));
    }
    else {
      return null;
    }
    return new Equation(key, result);
  }
@Nullable
  private static Equation outEquation(boolean exception, Member member, BasicValue returnValue, boolean stable)