code: @SuppressWarnings("unchecked")
      @Override
      public Class<Model> getModel(String modelPackagesCsv) throws TechnicalException {
          if (modelPackagesCsv != null && !"".equals(modelPackagesCsv)) {
              final String[] packages = modelPackagesCsv.split(";");
              try {
                  if (packages.length > 0) {
                      Set<Class<?>> returnedClasses;
                      logger.debug("packages length is {}", packages.length);
                      for (final String p : packages) {
                          returnedClasses = getClasses(p);
                          logger.debug("package [{}] return {} classes", p, returnedClasses.size());
                          for (final Class<?> c : returnedClasses) {
                              if (Model.class.isAssignableFrom(c)) {
                                  boolean mappingOK = false;
                                  for (final Field f : c.getDeclaredFields()) {
                                      if (f.isAnnotationPresent(Column.class)) {
                                          mappingOK = columns.contains(f.getAnnotation(Column.class).name());
                                      }
                                  }
                                  if (mappingOK) {
                                      return (Class<Model>) c;
                                  }
                              }
                          }
                      }
                  }
                  return null;
              } catch (final Exception e) {
                  throw new TechnicalException(Messages.getMessage(TechnicalException.TECHNICAL_ERROR_MESSAGE_DATA_IOEXCEPTION), e);
              }
          } else {
              return null;
          }
      }
docs: {@inheritDoc}