void addBareCall(@Nullable PsiMethodCallExpression expression, @NotNull PsiReferenceExpression reference) {
    addConditionalErrorThrow();
    PsiMethod method = ObjectUtils.tryCast(reference.resolve(), PsiMethod.class);
    List<? extends MethodContract> contracts =
      method == null ? Collections.emptyList() :
      DfaUtil.addRangeContracts(method, JavaMethodContractUtil.getMethodCallContracts(method, expression));
    PsiExpression anchor;
    if (expression == null) {
      assert reference instanceof PsiMethodReferenceExpression;
      addInstruction(new MethodCallInstruction((PsiMethodReferenceExpression)reference, contracts));
      anchor = reference;
    }
    else {
      if (ExpressionUtils.isVoidContext(expression) && ContainerUtil.all(contracts, c ->
        c.getReturnValue() != ContractReturnValue.fail() && !(c.getReturnValue() instanceof ContractReturnValue.ParameterReturnValue))) {
        // Do not track contracts if return value is not used
        contracts = Collections.emptyList();
      }
      addInstruction(new MethodCallInstruction(expression, JavaDfaValueFactory.getExpressionDfaValue(myFactory, expression), contracts));
      anchor = expression;
    }
    processFailResult(method, contracts, anchor);

    addMethodThrows(method);
    if (expression != null) {
      addNullCheck(expression);
    }
  }
void addBareCall(@Nullable PsiMethodCallExpression expression, @NotNull PsiReferenceExpression reference)