public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
		if (roundEnv.processingOver()) {
			return false;
		}

		messager = processingEnv.getMessager();
		eltUtils = processingEnv.getElementUtils();
		preserveAnnotationTypeMirror = eltUtils.getTypeElement(PreserveParameterNames.class.getName()).asType();

		for (Element annotatedElement : roundEnv.getElementsAnnotatedWith(PreserveParameterNames.class)) {
			AnnotationMirror annotationMirror = getAnnotationMirror(annotatedElement);
			if (annotatedElement.getKind() == ElementKind.INTERFACE) {
				processPreserveAnnotation(annotatedElement);
			} else {
				messager.printMessage(
						Diagnostic.Kind.WARNING,
						"skipping non-interface annotated with " + PreserveParameterNames.class.getName(),
						annotatedElement,
						annotationMirror
				);
			}
		}
		return false;
	}