@Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {

        if (!roundEnv.processingOver()) {
            // We only have one annotation, but this is still easier.
            for (TypeElement annotationType : annotations) {
                for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(annotationType)) {
                    // Loops through the annotations on the annotated element. At least one should be our annotation.
                    for (AnnotationMirror annotation : annotatedElement.getAnnotationMirrors()) {
                        // Check if the current annotation has our annotation type.
                        if (annotation.getAnnotationType().asElement().equals(annotationType)) {
                            // Find annotation value.
                            AnnotationValue value = null;

                            for (ExecutableElement executableElement :annotation.getElementValues().keySet()) {
                                if (executableElement.getSimpleName().contentEquals("value")) {
                                    value = annotation.getElementValues().get(executableElement);
                                    break;
                                }
                            }

                            // Lets validate the the pointed to path is available.
                            File resourceDir = new File("src/main/resources");
                            File resourceFile = new File(resourceDir, value.getValue().toString());
                            if (!resourceFile.exists()) {
                                // Kind.ERROR will cause a compilation failure!
                                super.processingEnv.getMessager().printMessage(Kind.ERROR, "The specified resource (" + value.getValue() + ") is not available!", annotatedElement, annotation, value);
                            }
                        }
                    }
                }
            }
        } 

        return true; // We always process our annotation.
    }