private void updateDataPoint(Map<JavaDfaAnchor, DataflowPoint> data,
                                 JavaDfaAnchor anchor,
                                 DfaMemoryState memState,
                                 DfaValue value) {
      DataflowPoint point = data.computeIfAbsent(anchor, e -> new DataflowPoint());
      if (DfaTypeValue.isContractFail(value)) {
        point.myMayFailByContract = true;
        return;
      }
      if (point.myDfType != DfType.TOP && anchor instanceof JavaExpressionAnchor) {
        PsiExpression expression = ((JavaExpressionAnchor)anchor).getExpression();
        PsiElement parent = PsiUtil.skipParenthesizedExprUp(expression.getParent());
        if (parent instanceof PsiConditionalExpression &&
            !PsiTreeUtil.isAncestor(((PsiConditionalExpression)parent).getCondition(), expression, false)) {
          add(new JavaExpressionAnchor((PsiExpression)parent), memState, value);
        }
      }
      point.addFacts(memState, value);
      point.addValue(memState, value);
    }
private void updateDataPoint(Map<JavaDfaAnchor, DataflowPoint> data,
                                 JavaDfaAnchor anchor,
                                 DfaMemoryState memState,
                                 DfaValue value)