@Nullable
  MethodReturnInferenceResult getResult() {
    List<ExpressionRange> delegateCalls = myReturnValue.myCalledMethod == null ? null : myReturnValue.myRanges;
    boolean hasNulls = myReturnValue.myNullability.contains(Nullability.NULLABLE);
    boolean hasNotNulls = myReturnValue.myNullability.contains(Nullability.NOT_NULL);
    boolean hasUnknowns = myReturnValue.myNullability.contains(Nullability.UNKNOWN);
    if (hasNulls) {
      if (hasSystemExit) {
        return new MethodReturnInferenceResult.Predefined(Nullability.UNKNOWN);
      }
      return delegateCalls == null || hasNotNulls || hasErrors || hasUnknowns
             ? new MethodReturnInferenceResult.Predefined(Nullability.NULLABLE)
             : new MethodReturnInferenceResult.FromDelegate(Nullability.NULLABLE, delegateCalls);
    }
    if (hasErrors || hasUnknowns) {
      return null;
    }
    if (delegateCalls != null) {
      return new MethodReturnInferenceResult.FromDelegate(hasNotNulls ? Nullability.NOT_NULL : Nullability.UNKNOWN, delegateCalls);
    }

    if (hasNotNulls) {
      return new MethodReturnInferenceResult.Predefined(Nullability.NOT_NULL);
    }
    return null;
  }
@Nullable
  MethodReturnInferenceResult getResult()