code: private void createProxyJsMethod(Builder componentExposedTypeBuilder,
        ExecutableElement originalMethod, String proxyMethodName) {
      Emit emitAnnotation = originalMethod.getAnnotation(Emit.class);
  
      MethodSpec.Builder proxyMethodBuilder = MethodSpec
          .methodBuilder(proxyMethodName)
          .addModifiers(Modifier.PUBLIC)
          .addAnnotation(JsMethod.class)
          .addAnnotation(getUnusableByJSAnnotation())
          .returns(ClassName.get(originalMethod.getReturnType()));
  
      originalMethod
          .getParameters()
          .forEach(parameter -> proxyMethodBuilder.addParameter(TypeName.get(parameter.asType()),
              parameter.getSimpleName().toString()));
  
      String methodCallParameters = getSuperMethodCallParameters(originalMethod);
      boolean hasReturnValue = !"void".equals(originalMethod.getReturnType().toString());
      if (hasReturnValue) {
        proxyMethodBuilder.addStatement("$T result = super.$L($L)",
            originalMethod.getReturnType(),
            originalMethod.getSimpleName().toString(),
            methodCallParameters);
      } else {
        proxyMethodBuilder.addStatement("super.$L($L)",
            originalMethod.getSimpleName().toString(),
            methodCallParameters);
      }
  
      if (emitAnnotation != null) {
        addEmitEventCall(originalMethod, proxyMethodBuilder, methodCallParameters);
      }
  
      if (hasReturnValue) {
        proxyMethodBuilder.addStatement("return result");
      }
  
      componentExposedTypeBuilder.addMethod(proxyMethodBuilder.build());
    }
docs: Generate a JsInterop proxy method for a {@link IsVueComponent} method.
  
  @param componentExposedTypeBuilder Builder for the ExposedType class
  @param originalMethod Method to proxify
  @param proxyMethodName The name of the proxy method