private static @Nullable AnalysisStartingPoint getIntermediateRowAnalysis(@NotNull PsiElement anchor) {
    if (anchor instanceof PsiExpression) {
      return new AnalysisStartingPoint(DfTypes.NULL, (PsiExpression)anchor);
    }
    if (!(anchor instanceof PsiIdentifier)) return null;
    PsiReferenceExpression ref = tryCast(anchor.getParent(), PsiReferenceExpression.class);
    if (ref == null) return null;
    PsiMethodCallExpression call = tryCast(ref.getParent(), PsiMethodCallExpression.class);
    if (call == null) return null;
    PsiMethod method = call.resolveMethod();
    if (method == null) return null;
    if (!JavaMethodContractUtil.isPure(method)) return null;
    List<? extends MethodContract> contracts = JavaMethodContractUtil.getMethodCallContracts(method, call);
    if (contracts.isEmpty() || contracts.size() > 2) return null;
    MethodContract failContract = contracts.get(0);
    if (failContract.getReturnValue() != ContractReturnValue.fail()) return null;
    if (contracts.size() == 2 && !(contracts.get(1).getReturnValue() instanceof ContractReturnValue.ParameterReturnValue)) return null;
    ContractValue condition = ContainerUtil.getOnlyItem(failContract.getConditions());
    if (condition == null) return null;
    PsiExpression[] args = call.getArgumentList().getExpressions();
    PsiExpression arg = getArgFromContract(args, condition, ContractValue.nullValue(), true);
    if (arg != null) {
      return AnalysisStartingPoint.create(DfTypes.NULL, arg);
    }
    arg = getArgFromContract(args, condition, ContractValue.nullValue(), false);
    if (arg != null) {
      return AnalysisStartingPoint.create(DfTypes.NOT_NULL_OBJECT, arg);
    }
    arg = getArgFromContract(args, condition, ContractValue.booleanValue(true), true);
    if (arg != null) {
      return AnalysisStartingPoint.fromCondition(arg);
    }
    arg = getArgFromContract(args, condition, ContractValue.booleanValue(false), true);
    if (arg != null) {
      return AnalysisStartingPoint.tryNegate(AnalysisStartingPoint.fromCondition(arg));
    }
    return null;
  }
private static @Nullable AnalysisStartingPoint getIntermediateRowAnalysis(@NotNull PsiElement anchor)