class KnowledgeSessionListItemPresenter extends ListItemPresenter<KSessionModel, KnowledgeSessionsModal, KnowledgeSessionListItemPresenter.View> {

    @Override
    public KnowledgeSessionListItemPresenter setup(final KSessionModel kSessionModel,
                                                   final KnowledgeSessionsModal parentPresenter) {
        this.kSessionModel = kSessionModel;
        this.parentPresenter = parentPresenter;

        view.init(this);

        view.setIsDefault(kSessionModel.isDefault());
        view.setName(kSessionModel.getName());
        view.setType(kSessionModel.getType());
        view.setListenersCount(kSessionModel.getListeners().size());
        view.setWorkItemHandlersCount(kSessionModel.getWorkItemHandelerModels().size());

        listenersListPresenter.setup(
                view.getListenersContainer(),
                kSessionModel.getListeners(),
                (listener, presenter) -> presenter.setup(listener, this));

        workItemHandlersListPresenter.setup(
                view.getWorkItemHandlersContainer(),
                kSessionModel.getWorkItemHandelerModels(),
                (workItemHandler, presenter) -> presenter.setup(workItemHandler, this));

        view.setupClockElement(kSessionModel, parentPresenter);

        view.initListViewCompoundExpandableItems();

        return this;
    }

    @Inject public  KnowledgeSessionListItemPresenter(final View view,
                                             final Event<DefaultKnowledgeSessionChange> defaultKnowledgeSessionChangeEvent,
                                             final WorkItemHandlersListPresenter workItemHandlersListPresenter,
                                             final ListenersListPresenter listenersListPresenter);

}