code: public static List<ModelError> parseDirectory( File directory, Component c ) {
  
  		// Validate all the properties
  		List<ModelError> result = new ArrayList<> ();
  		Set<String> targetIds = new HashSet<> ();
  		for( File f : Utils.listDirectFiles( directory, Constants.FILE_EXT_PROPERTIES )) {
  
  			TargetValidator tv = new TargetValidator( f, c );
  			tv.validate();
  			result.addAll( tv.getErrors());
  
  			String id = tv.getProperties().getProperty( Constants.TARGET_PROPERTY_ID );
  			if( targetIds.contains( id ))
  				result.add( new ModelError( ErrorCode.REC_TARGET_CONFLICTING_ID, tv.modelObject, name( id )));
  
  			targetIds.add( id );
  		}
  
  		// There should be properties files
  		if( targetIds.isEmpty())
  			result.add( new ModelError( ErrorCode.REC_TARGET_NO_PROPERTIES, null, directory( directory )));
  
  		return result;
  	}
docs: Parses a directory with one or several properties files.
  @param directory an existing directory
  @return a non-null list of errors