docs: private void processPackage(File root, File dir) {
          getLog().debug("- package: " + dir);
          if (null != dir && dir.isDirectory()) {
              for (File f : dir.listFiles(new FileFilter() {
                  @Override
                  public boolean accept(File pathname) {
                      return pathname.isDirectory() || pathname.getName().endsWith(".class");
                  }
              })) {
                  if (f.isDirectory()) {
                      processPackage(root, f);
                  } else if (f.getParentFile().getAbsolutePath().replace(File.separatorChar, '.').endsWith(basePackage + '.' + domainPackageName)) {
                      final String simpleName = f.getName().substring(0, f.getName().lastIndexOf(".class"));
                      final String className = String.format("%s.%s.%s", basePackage, domainPackageName, simpleName);
                      getLog().debug(String.format("--- class %s", className));
                      try {
                          Class clazz = loader.loadClass(className);
                          if (!Modifier.isAbstract(clazz.getModifiers()) && isEntity(clazz)) {
                              getLog().debug("@Entity " + clazz.getName());
                              final Entity entity = new Entity();
                              entity.setClazz(clazz);
  
                              final String packageName = clazz.getPackage().getName();
                              Group group = packages.get(packageName);
                              if (null == group) {
                                  group = new Group();
                                  group.setName(packageName);
                                  packages.put(packageName, group);
                              }
  
                              group.getEntities().put(simpleName, entity);
                              entities.put(entity.getClassName(), entity);
                          }
                      } catch (ClassNotFoundException ex) {
                          Logger.getLogger(ProcessDomainMojo.class.getName()).log(Level.SEVERE, null, ex);
                      }
                  }
              }
          }
      }