class RCSAnnotationParser implements Executor.StreamHandler {
    private static final Logger LOGGER = LoggerFactory.getLogger(RCSAnnotationParser.class);

    private Annotation annotation = null;
    private final File file;

    /**
     * Pattern used to extract author/revision from {@code blame}.
     */
    private static final Pattern ANNOTATION_PATTERN
            = Pattern.compile("^([\\d\\.]+)\\s*\\((\\S+)\\s*\\S+\\): ");

    RCSAnnotationParser(File file) {
        this.file = file;
    }

    @Override
    public void processStream(InputStream input) throws IOException {<FILL_FUNCTION_BODY>}

    Annotation getAnnotation() {
        return this.annotation;
    }
}

        annotation = new Annotation(file.getName());
        String line;
        int lineno = 0;
        Matcher matcher = ANNOTATION_PATTERN.matcher("");

        try (BufferedReader in = new BufferedReader(new InputStreamReader(input))) {
            while ((line = in.readLine()) != null) {
                ++lineno;
                matcher.reset(line);
                if (matcher.find()) {
                    String rev = matcher.group(1);
                    String author = matcher.group(2);
                    annotation.addLine(rev, author, true);
                } else {
                    LOGGER.log(Level.WARNING,
                            "Error: did not find annotation in line {0} for ''{1}'': [{2}]",
                            new Object[]{lineno, this.file, line});
                }
            }
        }
    
<no_super_class>