@PostConstruct
  @SuppressWarnings({"unchecked"})
  @Override
  public synchronized void subscribe() {
    for (final MethodMessageHandler commandHandler : inspector.getHandlers()) {
      CommandHandler<Object> handler =
          new CommandHandler<Object>() {
            @Override
            public Object handle(CommandMessage<Object> command, UnitOfWork unitOfWork)
                throws Throwable {
              T aggregate = loadAggregate(command);
              try {
                return commandHandler.invoke(aggregate, command);
              } catch (InvocationTargetException e) {
                throw e.getCause();
              }
            }
          };
      commandBus.subscribe(commandHandler.getPayloadType(), handler);
      registeredCommandHandlers.put(commandHandler.getPayloadType(), handler);
    }

    for (final ConstructorCommandMessageHandler<T> handler : inspector.getConstructorHandlers()) {
      commandBus.subscribe(
          handler.getPayloadType(), new AnnotatedConstructorCommandHandler(handler));
    }
  }
 @Override
 public Object handle(CommandMessage<Object> command, UnitOfWork unitOfWork) throws Throwable {
   try {
     repository.add(handler.invoke(null, command));
   } catch (InvocationTargetException e) {
     throw e.getCause();
   }
   return null;
 }