private void finishCall(PsiMethodCallExpression call) {
    PsiExpression[] expressions = call.getArgumentList().getExpressions();
    PsiReferenceExpression methodExpression = call.getMethodExpression();
    JavaResolveResult result = methodExpression.advancedResolve(false);
    PsiMethod method = ObjectUtils.tryCast(result.getElement(), PsiMethod.class);
    PsiParameter[] parameters = method != null ? method.getParameterList().getParameters() : null;

    if (method != null && ConsumedStreamUtils.isCheckedCallForConsumedStream(method)) {
      addConsumedStreamCheckInstructions(methodExpression.getQualifierExpression(), "java.lang.IllegalStateException");
    }

    for (int i = 0; i < expressions.length; i++) {
      PsiExpression paramExpr = expressions[i];
      paramExpr.accept(this);
      if (parameters != null && i < parameters.length) {
        generateBoxingUnboxingInstructionFor(paramExpr, result.getSubstitutor().substitute(parameters[i].getType()));
      }
    }
    foldVarArgs(call, parameters);

    addBareCall(call, methodExpression);
    finishElement(call);
  }
private void finishCall(PsiMethodCallExpression call)