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

    /**
     * Store annotation created by {@link #processStream(InputStream)}.
     */
    private final Annotation annotation;

    private final Map<String, String> authors;

    private final File file;

    /**
     * Pattern used to extract revision from the {@code sccs get} command.
     */
    private static final Pattern ANNOTATION_PATTERN = Pattern.compile("^([\\d.]+)\\s+");

    SCCSRepositoryAnnotationParser(File file, Map<String, String> authors) {
        this.file = file;
        this.annotation = new Annotation(file.getName());
        this.authors = authors;
    }

    /**
     * Returns the annotation that has been created.
     *
     * @return annotation an annotation object
     */
    public Annotation getAnnotation() {
        return annotation;
    }

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

        try (BufferedReader in = new BufferedReader(new InputStreamReader(input))) {
            String line;
            int lineno = 0;
            while ((line = in.readLine()) != null) {
                ++lineno;
                Matcher matcher = ANNOTATION_PATTERN.matcher(line);
                if (matcher.find()) {
                    String rev = matcher.group(1);
                    String author = authors.get(rev);
                    if (author == null) {
                        author = "unknown";
                    }

                    annotation.addLine(rev, author, true);
                } else {
                    LOGGER.log(Level.SEVERE,
                            "Error: did not find annotations in line {0} for ''{2}'': [{1}]",
                            new Object[]{lineno, line, file});
                }
            }
        }
    
<no_super_class>