@codingricky I almost considered suggesting this the other night:

    fMethodsForAnnotations = makeDeeplyUnmodifiable(methodsForAnnotations);
    fFieldsForAnnotations = makeDeeplyUnmodifiable(fieldsForAnnotations);

    ....

    private static <T extends FrameworkMember<T>> Map<Class<? extends Annotation>, List<T>>
            makeDeeplyUnmodifiable(Map<Class<? extends Annotation>, List<T>> map) {
        copy = new LinkedHashMap<>();
        for (Map.Entry<Class<? extends Annotation>, List<T>> entry : source.entrySet()) {
            copy.put(entry.getKey(), Collections.unmodifiableList(entry.getValue()));
        }
        return Collections.unmodifiableMap(copy);
    }