boolean (PsiType[] typeArguments, PsiTypeParameter[] typeParameters, PsiMethod method, PsiMethodReferenceExpression methodRefCopy) { final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(methodRefCopy.getProject()); PsiTypeElement qualifierType = methodRefCopy.getQualifierType(); if (qualifierType != null) { qualifierType.replace(elementFactory.createTypeElement(((PsiClassType)qualifierType.getType()).rawType())); } else { PsiReferenceParameterList parameterList = methodRefCopy.getParameterList(); if (parameterList != null) { parameterList.delete(); } } JavaResolveResult result = methodRefCopy.advancedResolve(false); if (method != null && result.getElement() != method) return false; final PsiSubstitutor psiSubstitutor = result.getSubstitutor(); for (int i = 0; i < typeParameters.length; i++) { PsiTypeParameter typeParameter = typeParameters[i]; final PsiType inferredType = psiSubstitutor.getSubstitutionMap().get(typeParameter); if (!typeArguments[i].equals(inferredType)) { return false; } } return checkParentApplicability(methodRefCopy); }