docs: private MBeanOperationInfo[] getOperationInfo() {
          final List<MBeanOperationInfo> infoList = new ArrayList<>();
  
          if (type != null) {
              ReflectionUtils.doWithMethods(type, new ReflectionUtils.MethodCallback() {
                  @Override
                  public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
                      infoList.add(new MBeanOperationInfo(OPERATION_DESCRIPTION, method));
                  }
              }, new ReflectionUtils.MethodFilter() {
                  @Override
                  public boolean matches(Method method) {
                      return method.getDeclaringClass().equals(type)
                              && !method.getName().startsWith("set")
                              && !method.getName().startsWith("get")
                              && !method.getName().startsWith("is")
                              && !method.getName().startsWith("$jacoco"); // Fix for code coverage
                  }
              });
          } else {
              for (ManagedBeanInvocation.Operation operation : operations) {
                  List<MBeanParameterInfo> parameterInfo = new ArrayList<>();
  
                  int i = 1;
                  for (OperationParam parameter : operation.getParameter().getParameter()) {
                      parameterInfo.add(new MBeanParameterInfo("p" + i++, parameter.getType(), "Parameter #" + i));
                  }
  
                  infoList.add(new MBeanOperationInfo(operation.getName(), OPERATION_DESCRIPTION, parameterInfo.toArray(new MBeanParameterInfo[operation.getParameter().getParameter().size()]), operation.getReturnType(), MBeanOperationInfo.UNKNOWN));
              }
          }
  
          return infoList.toArray(new MBeanOperationInfo[infoList.size()]);
      }