class PmoBasedSectionFactory {

    public static AbstractSection createAndBindSection(Object pmo, BindingContext bindingContext) {
        requireNonNull(pmo, "pmo must not be null");
        requireNonNull(bindingContext, "bindingContext must not be null");
        Class<? extends Object> pmoClass = pmo.getClass();
        LinkkiComponentDefinition componentDefinition = ComponentAnnotationReader.findComponentDefinition(pmoClass)
                .orElse(SectionComponentDefiniton.DEFAULT);

        LinkkiLayoutDefinition layoutDefinition = LayoutAnnotationReader.findLayoutDefinition(pmoClass)
                .orElse(SectionLayoutDefinition.DEFAULT);

        ComponentWrapper componentWrapper = UiCreator
                .createComponent(pmo, bindingContext, componentDefinition, Optional.of(layoutDefinition));
        return (AbstractSection)componentWrapper.getComponent();
    }

}