@Nullable
  private static List<Supplier<ReflectiveType>> getLazyMethodSignatureForReturnTypeAndMethodType(
    @NotNull PsiMethodCallExpression callExpression
  ) {
    final PsiExpression[] arguments = callExpression.getArgumentList().getExpressions();
    if (arguments.length == 2) {
      final PsiExpression methodType = findInnermostMethodType(arguments[1]);
      if (methodType != null) {
        final List<Supplier<ReflectiveType>> nestedSignature = getLazyMethodSignature(methodType);
        if (nestedSignature != null) {
          final List<Supplier<ReflectiveType>> signature = new ArrayList<>(nestedSignature);
          if (!signature.isEmpty()) {
            final PsiExpression returnType = arguments[0];
            signature.set(0, () -> getReflectiveType(returnType));
          }
          return signature;
        }
      }
    }
    return null;
  }
@Nullable
  private static List<Supplier<ReflectiveType>> getLazyMethodSignatureForReturnTypeAndMethodType(
    @NotNull PsiMethodCallExpression callExpression
  )