class LogErrorValidator extends LogValidator<Log.error> {

    @Override
    public void validate(Method method, Log.error target) throws AnnotationUsageException {
        super.validate(method, target);

        Class<? extends Throwable>[] ofType = target.ofType();
        Class<? extends Throwable>[] exclude = target.exclude();
        ErrorLog.Filter filter = errorFilterFactory.buildErrorFilter(ofType, exclude);

        Set<Class<? extends Throwable>> includes = filter.getIncludes();
        if (includes.isEmpty()) {
            throw new AnnotationUsageException(method,
                    "Empty error set specified for filter",
                    "Correct error sets or remove unnecessary annotation",
                    target);
        }

        Set<Class<? extends Throwable>> excludes = filter.getExcludes();
        if (ofType.length > includes.size() || exclude.length > excludes.size()) {
            throw new AnnotationUsageException(method,
                    "Error set contains duplicates",
                    "Remove duplicate error types",
                    target);
        }
    }

    public  LogErrorValidator(PrinterResolver printerResolver);

}