code: @Override
  	public boolean process(Set<? extends TypeElement> elements,
  			RoundEnvironment environment) {
  		Messager messager = processingEnv.getMessager();
  		
  		for (TypeElement element : elements) {
  			Set<? extends Element> elementsAnnotatedWith = environment.getElementsAnnotatedWith(element);
  			
  			for (Element elementAnnotatedWith : elementsAnnotatedWith) {
  				TypeElement typeElement = (TypeElement) elementAnnotatedWith;
  				EntityValidator validator = new EntityValidator(processingEnv.getTypeUtils());
  				List<Problem> problems = validator.validate(typeElement);
  				
  //				for (Problem problem : problems) {
  //					System.out.println(problem);
  //				}
  				
  				boolean error = false;
  				
  				for (Problem problem : problems) {
  					if (problem.kind() == Kind.ERROR) {
  						error = true;
  					}
  					
  					messager.printMessage(problem.kind(), problem.message(), problem.element());
  				}
  				
  				if (!error) {
  					MetamodelSource source = new MetamodelSource(typeElement, processingEnv);
  					
  					try {
  						source.save();
  					} catch (Exception e) {
  						messager.printMessage(Kind.ERROR, "Metamodel ["
  								+ source.toMetamodelName(typeElement.getQualifiedName().toString())
  								+ "] cannot be saved due to [" + e + "]",
  								typeElement);
  						e.printStackTrace();
  					}
  				}
  			}
  		}
  		
  		return true;
  	}
docs: Generates metamodel Java source file of the specified Acid House entity
  class representations.
  
  @param elements Acid House entity class representations.
  @param environment Processing environment.