code: private <T> Actor createRawActor(
            final Definition definition,
            final Actor parent,
            final Address maybeAddress,
            final Mailbox maybeMailbox,
            final Supervisor maybeSupervisor,
            final Logger logger)
    throws Exception {
  
      if (isStopped()) {
        throw new IllegalStateException("Actor stage has been stopped.");
      }
  
      final Address address = maybeAddress != null ?
              maybeAddress : world.addressFactory().uniqueWith(definition.actorName());
  
      if (directory.isRegistered(address)) {
        throw new IllegalStateException("Address already exists: " + address);
      }
  
      final Mailbox mailbox = maybeMailbox != null ?
              maybeMailbox : ActorFactory.actorMailbox(this, address, definition);
  
      final Actor actor;
  
      try {
        actor = ActorFactory.actorFor(this, parent, definition, address, mailbox, maybeSupervisor, logger);
      } catch (Exception e) {
        logger.log("Actor instantiation failed because: " + e.getMessage(), e);
        throw new IllegalArgumentException("Actor instantiation failed because: " + e.getMessage(), e);
      }
  
      directory.register(actor.address(), actor);
  
      actor.lifeCycle.beforeStart(actor);
  
      return actor;
    }
docs: Answers a newly created Actor instance from the internal ActorFactory. (INTERNAL ONLY)
  @param definition the Definition of the Actor to create
  @param parent the Actor parent of the new Actor
  @param maybeAddress the possible Address of the Actor to create
  @param maybeMailbox the possible Mailbox of the Actor to create
  @param maybeSupervisor the possible Supervisor of the Actor to create
  @param logger the Logger of the Actor to create
  @param <T> the protocol type
  @return Actor
  @throws Exception thrown if there is a problem with Actor creation