class GeneralSettingsPresenter extends Section<ProjectScreenModel> {

    <T> Promise<Boolean> executeValidation(final Caller<T> caller,
                                           final Function<T, Boolean> call,
                                           final String errorMessage) {

        return promises
                .promisify(caller, call)
                .then(valid -> valid ? promises.resolve(true) : promises.reject(errorMessage));
    }

    @Inject public  GeneralSettingsPresenter(final View view,
                                    final Promises promises,
                                    final MenuItem<ProjectScreenModel> menuItem,
                                    final Caller<ValidationService> validationService,
                                    final Caller<WorkspaceProjectService> projectService,
                                    final Event<SettingsSectionChange<ProjectScreenModel>> settingsSectionChangeEvent,
                                    final GAVPreferences gavPreferences,
                                    final ProjectScopedResolutionStrategySupplier projectScopedResolutionStrategySupplier,
                                    final GitUrlsPresenter gitUrlsPresenter,
                                    final LibraryPlaces libraryPlaces);

}