code: private void checkOrInvokeValidStartMethod(final boolean invoke, final ClusterId clusterId) throws IllegalStateException {
          Method startMethod = null;
          for (final Method method : prototype.getClass().getDeclaredMethods()) {
              if (method.isAnnotationPresent(Start.class)) {
                  if (startMethod != null)
                      throw new IllegalStateException("Multiple methods on the message processor of type\""
                              + SafeString.valueOf(prototype)
                              + "\" is identified as a Start method. Please annotate at most one method using @Start.");
                  startMethod = method;
              }
          }
  
          // if the start method takes a ClusterId or ClusterDefinition then pass it.
          if (startMethod != null) {
              final Class<?>[] parameterTypes = startMethod.getParameterTypes();
              boolean takesClusterId = false;
              if (parameterTypes != null && parameterTypes.length == 1) {
                  if (ClusterId.class.isAssignableFrom(parameterTypes[0]))
                      takesClusterId = true;
                  else {
                      throw new IllegalStateException("The method \"" + startMethod.getName() + "\" on " + SafeString.objectDescription(prototype) +
                              " is annotated with the @" + Start.class.getSimpleName() + " annotation but doesn't have the correct signature. " +
                              "It needs to either take no parameters or take a single " + ClusterId.class.getSimpleName() + " parameter.");
                  }
              } else if (parameterTypes != null && parameterTypes.length > 1) {
                  throw new IllegalStateException("The method \"" + startMethod.getName() + "\" on " + SafeString.objectDescription(prototype) +
                          " is annotated with the @" + Start.class.getSimpleName() + " annotation but doesn't have the correct signature. " +
                          "It needs to either take no parameters or take a single " + ClusterId.class.getSimpleName() + " parameter.");
              }
              if (invoke) {
                  try {
                      if (takesClusterId)
                          startMethod.invoke(prototype, clusterId);
                      else
                          startMethod.invoke(prototype);
                  } catch (final Exception e) {
                      LOGGER.error(MarkerFactory.getMarker("FATAL"), "can't run MP initializer " + startMethod.getName(), e);
                  }
              }
          }
      }
docs: ----------------------------------------------------------------------------