class ProjectActivationSettings {
        /**
         * The selector of a project. This can be the project directory, [groupId]:[artifactId] or :[artifactId].
         */
        final String selector;

        /**
         * This describes how/when to active or deactivate the project.
         */
        final ActivationSettings activationSettings;

        ProjectActivationSettings(String selector, ActivationSettings activationSettings) {
            this.selector = selector;
            this.activationSettings = activationSettings;
        }
    }

    /**
     * List of activated and deactivated projects.
     */
    private final List<ProjectActivationSettings> activations = new ArrayList<>();

    /**
     * Adds a project activation to the request.
     * @param selector The selector of the project.
     * @param active Should the project be activated?
     * @param optional Can the build continue if the project does not exist?
     */
    public void addProjectActivation(String selector, boolean active, boolean optional) {<FILL_FUNCTION_BODY>

        final ActivationSettings settings = ActivationSettings.of(active, optional);
        this.activations.add(new ProjectActivationSettings(selector, settings));
    
<no_super_class>