private void validateMetaTypes() {
   for (Collection<EntityType> entityTypes :
       Arrays.asList(
           context.supertypes.values(),
           context.entityTypes.values(),
           context.extensionTypes.values(),
           context.embeddableTypes.values(),
           context.projectionTypes.values())) {
     for (EntityType entityType : entityTypes) {
       for (Property property : entityType.getProperties()) {
         if (property.getInits() != null && property.getInits().size() > 0) {
           validateInits(entityType, property);
         }
       }
     }
   }
 }
 protected void validateInits(EntityType entityType, Property property) {
   for (String init : property.getInits()) {
     if (!init.startsWith("*") && property.getType() instanceof EntityType) {
       String initProperty = init.contains(".") ? init.substring(0, init.indexOf('.')) : init;
       if (!((EntityType) property.getType()).getPropertyNames().contains(initProperty)) {
         processingEnv
             .getMessager()
             .printMessage(
                 Kind.ERROR,
                 "Illegal inits of "
                     + entityType.getFullName()
                     + "."
                     + property.getName()
                     + ": "
                     + initProperty
                     + " not found");
       }
     }
   }
 }