class POMEditorPanel implements POMEditorPanelView.Presenter,
                   IsWidget {

    public void setPOM(POM model,
                       boolean isReadOnly) {
        if (isReadOnly) {
            view.setReadOnly();
        }

        this.model = model;

        gavPreferences.load(projectScopedResolutionStrategySupplier.get(),
                            loadedGAVPreferences -> {
                                view.setName(model.getName());
                                view.setDescription(model.getDescription());
                                view.enableGroupID();
                                view.enableArtifactID();
                                view.enableVersion();

                                if (model.hasParent()) {
                                    view.setParentGAV(model.getParent());
                                    view.showParentGAV();
                                    if (!loadedGAVPreferences.isChildGAVEditEnabled()) {
                                        view.disableGroupID("");
                                        view.disableVersion("");
                                    }
                                } else {
                                    view.hideParentGAV();
                                }

                                view.setGAV(model.getGav());
                                view.addArtifactIdChangeHandler(POMEditorPanel.this::setTitle);
                                setTitle(model.getGav().getArtifactId());
                            },
                            throwable -> {
                                throw new RuntimeException(throwable);
                            });
    }

    public  POMEditorPanel();
    @Inject public  POMEditorPanel(final POMEditorPanelView view,
                          final SyncBeanManager iocManager,
                          final GAVPreferences gavPreferences,
                          final ProjectScopedResolutionStrategySupplier projectScopedResolutionStrategySupplier);

}