code: @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter"})
      public Optional<EventCallable> registerCaller(Identification identification) throws IllegalIDException {
          if(identification == null ||
              callers.containsKey(identification)) return Optional.empty();
          EventCaller eventCaller = new EventCaller(events);
          callers.put(identification, eventCaller);
          return Optional.of(eventCaller);
      }
docs: Registers with the EventManager to fire an event.
  
  Note: the same Event can be fired from multiple sources.
  Method is thread-safe.
  
  @param identification the Identification of the the instance
  @return an Optional, empty if already registered
  @throws IllegalIDException not yet implemented