boolean (@NotNull MethodSignature subSignature, @NotNull MethodSignature superSignature, final PsiSubstitutor unifyingSubstitutor) { if (unifyingSubstitutor == null) return false; if (!areErasedParametersEqual(subSignature, superSignature)) return false; final PsiType[] subParameterTypes = subSignature.getParameterTypes(); final PsiType[] superParameterTypes = superSignature.getParameterTypes(); for (int i = 0; i < subParameterTypes.length; i++) { final PsiType type1 = unifyingSubstitutor.substitute(subParameterTypes[i]); final PsiType type2 = unifyingSubstitutor.substitute(superParameterTypes[i]); if (!Comparing.equal(type1, type2)) { return false; } } return true; }