docs: private Method[] removeMessageEndpointMethods(Method[] listenerMethods) {
          ArrayList<Method> methods = new ArrayList<Method>();
  
          for (Method method : listenerMethods) {
              String name = method.getName();
              Class<?>[] params = method.getParameterTypes();
  
              if ("afterDelivery".equals(name) && params.length == 0) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      Tr.debug(tc, "removeMessageEndpointMethods: removing afterDelivery");
                  continue;
              } else if ("beforeDelivery".equals(name) && params.length == 1 && params[0] == Method.class) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      Tr.debug(tc, "removeMessageEndpointMethods: removing beforeDelivery");
                  continue;
              } else if ("release".equals(name) && params.length == 0) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      Tr.debug(tc, "removeMessageEndpointMethods: removing release");
                  continue;
              }
              methods.add(method);
          }
  
          if (methods.size() == listenerMethods.length) {
              return listenerMethods;
          }
  
          return methods.toArray(new Method[methods.size()]);
      }