class ExperimentalFeaturesGroup implements IsElement,
                                                  ExperimentalFeaturesGroupView.Presenter,
                                                  Comparable<ExperimentalFeaturesGroup> {

    public void init(final String labelKey, final Collection<ExperimentalFeature> features, final ParameterizedCommand<EditableExperimentalFeature> callback) {
        PortablePreconditions.checkNotNull("labelKey", labelKey);
        PortablePreconditions.checkNotNull("features", features);
        PortablePreconditions.checkNotNull("callback", callback);

        clear();

        this.labelKey = labelKey;

        this.callback = feature -> {
            callback.execute(feature);
            setEnableAllLabel();
        };

        view.setLabel(getLabel());

        features.stream()
                .map(this::getEditor)
                .collect(Collectors.toCollection(TreeSet::new))
                .forEach(view::render);

        setEnableAllLabel();
    }

    @Inject public  ExperimentalFeaturesGroup(final ExperimentalFeaturesGroupView view, final TranslationService translationService, final ManagedInstance<ExperimentalFeatureEditor> editorInstance);

}