code: ContextRuntime spawnChildContext(
        final Configuration contextConfiguration) throws ContextClientCodeException {
  
      synchronized (this.contextLifeCycle) {
  
        if (this.task.isPresent()) {
          throw new IllegalStateException(
              "Attempting to to spawn a child context while a Task with id '" +
                  this.task.get().getId() + "' is running.");
        }
  
        if (this.childContext.isPresent()) {
          throw new IllegalStateException(
              "Attempting to spawn a child context on a context that is not the topmost active context");
        }
  
        final Injector childServiceInjector = this.serviceInjector.forkInjector();
        final ContextRuntime newChildContext =
            new ContextRuntime(childServiceInjector, contextConfiguration, Optional.of(this));
  
        this.childContext = Optional.of(newChildContext);
        return newChildContext;
      }
    }
docs: Spawns a new context without services of its own.
  <p>
  The new context will have a serviceInjector that is created by forking the one in this object. The
  contextConfiguration is used to fork the contextInjector from that new serviceInjector.
  
  @param contextConfiguration the new context's context (local) Configuration.
  @return a child context.
  @throws ContextClientCodeException If the context can't be instantiate due to user code / configuration issues.
  @throws IllegalStateException      If this method is called when there is either a task or child context already
  present.