I think you should create a new List<Throwable> and pass it to the validator. With what you have here, a validator could remove errors.

Alternatively, the validation methods could return a List<Throwable>. I personally prefer this option, especially if AnnotationValidator is changed to be a concrete class (the base class implementation could return empty lists)