private static boolean areSameShapeFunctionalTypes(PsiType one, PsiType two) {
      final PsiMethod method1 = LambdaUtil.getFunctionalInterfaceMethod(one);
      final PsiMethod method2 = LambdaUtil.getFunctionalInterfaceMethod(two);
      if (method1 == null || method2 == null) {
        return false;
      }
      final PsiType returnType1 = method1.getReturnType();
      final PsiType returnType2 = method2.getReturnType();
      if (PsiTypes.voidType().equals(returnType1) ^ PsiTypes.voidType().equals(returnType2)) {
        return false;
      }
      return method1.getParameterList().getParametersCount() == method2.getParameterList().getParametersCount();
    }
private static boolean areSameShapeFunctionalTypes(PsiType one, PsiType two)