NavigatorPlugin { @SuppressWarnings("unchecked") public MetadataModel registerModels(String packageName) { Reflections ref = new Reflections(packageName + "."); Set<Class<?>> types = ref.getTypesAnnotatedWith(MClass.class); Collection<Class<Entity>> modelClasses = Lists.newArrayListWithExpectedSize( types.size() + 1); for (Class<?> aClass : types) { Preconditions.checkArgument(Entity.class.isAssignableFrom(aClass)); modelClasses.add((Class<Entity>)aClass); } if (modelClasses.size() > 0) { LOG.info("Registering models: {}", modelClasses); return registerModels(modelClasses); } else { LOG.info("No models to be registered in package {}", packageName); return null; } } NavigatorPlugin(ClientConfig config,
                         MetadataWriterFactory factory);  NavigatorPlugin(ClientConfig config); static NavigatorPlugin fromConfigFile(String configFilePath); static NavigatorPlugin fromConfigMap(Map<String, Object> configMap); @SuppressWarnings("unchecked") MetadataModel registerModels(String packageName); MetadataModel registerModel(Class<? extends Entity> entityClass); MetadataModel registerModels(
      Collection<? extends Class<? extends Entity>> classes); ResultSet write(Entity entity); ResultSet write(Collection<Entity> entities); NavApiCient getClient(); ClientConfig getConfig(); String getNamespace();  }
@Test public void testRegisterModels() { assertModelRegistration(); }