PsiSubstitutor infer(boolean prohibitCaching) {
        final InferenceSession inferenceSession = new InferenceSession(typeParameters, partialSubstitutor, parent.getManager(), parent, policy);
        inferenceSession.initExpressionConstraints(parameters, arguments,
                                                   currentMethod != null ? currentMethod.getElement() : null,
                                                   currentMethod != null && currentMethod.isVarargs());
        return inferenceSession.performGuardedInference(parameters, arguments, parent, currentMethod, PsiSubstitutor.EMPTY,
                                                        prohibitCaching);
      }
PsiSubstitutor infer(boolean prohibitCaching)