Although the returned Map is unmodifiable, the values are modifiable lists. Please change to:

    public List<FrameworkMethod> getAnnotatedMethods(Class<? extends Annotation> annotation) {
        return Collections.unmodifiableList(fMethodsForAnnotations.get(annotation));
    }

(though I would prefer that the values for fMethodsForAnnotations to be unmodifiable lists)