class PostProcessors {

    private final List<Processor> postProcessors = new ArrayList<>();

    public PostProcessors(Processor... postProcessors) {
        this.postProcessors.addAll(Arrays.asList(postProcessors));
    }

    public List<Processor> getPostProcessors() {
        return postProcessors;
    }

    public PostProcessors remove(Processor postProcessor) {<FILL_FUNCTION_BODY>}

    public PostProcessors replace(Processor oldProcessor, Processor newProcessor) {
        remove(oldProcessor);
        add(newProcessor);
        return this;
    }

    public PostProcessors add(Processor newProcessor) {
        postProcessors.add(newProcessor);
        return this;
    }

    public void postProcess(ParseResult<? extends Node> result, ParserConfiguration configuration) {
        postProcessors.forEach(pp -> pp.postProcess(result, configuration));
    }
}

        if (!postProcessors.remove(postProcessor)) {
            throw new AssertionError("Trying to remove a post processor that isn't there.");
        }
        return this;
    
<no_super_class>