code: public SynchronizeFxServer newChannel(final Object root, final String channelName, final ServerCallback callback) {
          synchronized (channels) {
              if (channels.containsKey(channelName)) {
                  throw new IllegalArgumentException("A new SynchronizeFX channel with the name \"" + channelName
                          + "\" should be created a channel with this name does already exist.");
              }
  
              final SynchronizeFXTomcatChannel channel = new SynchronizeFXTomcatChannel(this, newSerializer());
              final SynchronizeFxServer server = new SynchronizeFxServer(root, channel, callback);
              channels.put(channelName, channel);
              servers.put(server, channel);
              return server;
          }
      }
docs: Creates a new {@link SynchronizeFxServer} that synchronizes it's own model.
  
  <p>
  Each {@link SynchronizeFxServer} managed by this servlet must have its own channel name.
  </p>
  
  @param root The root object of the model that should be synchronized.
  @param channelName The name of the channel at which clients can connect to the new server.
  @param callback Used to inform the user of this class on errors. The methods in the callback are not called
  before you call {@link SynchronizeFxServer#start()}
  @throws IllegalArgumentException When a {@link SynchronizeFxServer} was already started with the given channel
  name and has not yet been shut down.
  @return The created server
  @see SynchronizeFxServer#SynchronizeFxServer(Object,
  de.saxsys.synchronizefx.core.clientserver.CommandTransferServer, ServerCallback)