@Override
	public void validate(ProcessingEnvironment procEnv,
			RoundEnvironment roundEnv, TypeElement annotationType,
			AnnotationMirror annotation, ExecutableElement e) {
		AnnotationValue expectedReturnType = AnnotationProcessingUtils
				.getAnnotationElementValue(procEnv, annotation,
						"expectedReturnType");
		AnnotationValue strictValue = AnnotationProcessingUtils
				.getAnnotationElementValue(procEnv, annotation, "strict");
		Boolean strict = (Boolean) strictValue.getValue();

		if (!matches(procEnv, strict, e.getReturnType(),
				(TypeMirror) expectedReturnType.getValue())) {
			procEnv.getMessager().printMessage(
					Diagnostic.Kind.ERROR,
					(String) AnnotationProcessingUtils
							.getAnnotationElementValue(procEnv, annotation,
									"errorMessage").getValue(), e, annotation,
					expectedReturnType);
		}
	}