MessageBus (@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); } }