code: public void fireProcessing() throws Exception {
          final Set<Class<?>> extensions = new HashSet<Class<?>>();
          final Set<Class<? extends Context>> contexts = new HashSet<Class<? extends Context>>();
          fire(new ManagerProcessing() {
              @Override
              public ManagerProcessing observer(Class<?> observer) {
                  if (extensions.contains(observer)) {
                      throw new IllegalArgumentException(
                          "Attempted to register the same Observer: " + observer.getName()
                              + " multiple times, please check classpath for conflicting jar versions");
                  }
                  extensions.add(observer);
                  return this;
              }
  
              @Override
              public ManagerProcessing context(Class<? extends Context> context) {
                  if (contexts.contains(context)) {
                      throw new IllegalArgumentException(
                          "Attempted to register the same " + Context.class.getSimpleName() + " : " + context.getName()
                              + " multiple times, please check classpath for conflicting jar versions");
                  }
                  contexts.add(context);
                  return this;
              }
          });
  
          this.extensions.addAll(createExtensions(extensions));
          this.contexts.addAll(createContexts(contexts));
      }
docs: -------------------------------------------------------------------------------------||