@Override
 public GlobalConfiguration build() {
   validate();
   List<Object> modulesConfig = new LinkedList<Object>();
   for (Builder<?> module : modules) modulesConfig.add(module.create());
   return new GlobalConfiguration(
       asyncListenerExecutor.create(),
       asyncTransportExecutor.create(),
       remoteCommandsExecutor.create(),
       evictionScheduledExecutor.create(),
       replicationQueueScheduledExecutor.create(),
       globalJmxStatistics.create(),
       transport.create(),
       serialization.create(),
       shutdown.create(),
       modulesConfig,
       site.create(),
       cl.get(),
       totalOrderExecutor.create());
 }