@Override
  public @NotNull MessageBus createMessageBus(@NotNull MessageBusOwner owner, @Nullable MessageBus parentBus) {
    if (parentBus == null) {
      return new RootBus(owner);
    }

    CompositeMessageBus parent = (CompositeMessageBus)parentBus;
    if (parent.getParent() == null) {
      return new CompositeMessageBus(owner, parent);
    }
    else {
      return new MessageBusImpl(owner, parent);
    }
  }
@Override
  public @NotNull MessageBus createMessageBus(@NotNull MessageBusOwner owner, @Nullable MessageBus parentBus)