docs: private void setChildObjects(Object pParent, ObjectMapper pOM)
          throws SQLException {
          if (pOM == null) {
              throw new NullPointerException("ObjectMapper in readChildObjects "
                                             + "cannot be null!!");
          }
  
          for (Enumeration keys = pOM.mMapTypes.keys(); keys.hasMoreElements();) {
              String property = (String) keys.nextElement();
              String mapType = (String) pOM.mMapTypes.get(property);
  	    
              if (property.length() <= 0 || mapType == null) {
                  continue;
              }
  	    
              // Get the id of the parent
              Object id = getPropertyValue(pParent, 
                                           pOM.getProperty(pOM.getPrimaryKey()));
  
              if (mapType.equals(ObjectMapper.OBJECTMAP)) {
                  // OBJECT Mapping		
  
                  // Get the class for this property
                  Class objectClass = (Class) pOM.mClasses.get(property);
  		
                  DatabaseReadable dbr = null;
                  try {
                      dbr = (DatabaseReadable) objectClass.newInstance();
                  }
                  catch (Exception e) {
                      mLog.logError(e);
                  }
  		
                  /*
                    Properties mapping = readMapping(objectClass);
                  */
  		    
                  // Get property mapping for child object
                  if (pOM.mJoins.containsKey(property))
                      // mapping.setProperty(".join", (String) pOM.joins.get(property));
                      dbr.getMapping().put(".join", pOM.mJoins.get(property));
  		
                  // Find id and put in where hash
                  Hashtable where = new Hashtable();
  
                  // String foreignKey = mapping.getProperty(".foreignKey");
                  String foreignKey = (String) 
                      dbr.getMapping().get(".foreignKey");
  
                  if (foreignKey != null) {
                      where.put(".foreignKey", id);
                  }
  
                  Object[] child = readObjects(dbr, where);
                  // Object[] child = readObjects(objectClass, mapping, where);
  
                  if (child.length < 1)
                      throw new SQLException("No child object with foreign key "
                                             + foreignKey + "=" + id);
                  else if (child.length != 1)
                      throw new SQLException("More than one object with foreign "
                                             + "key " + foreignKey + "=" + id);
  
                  // Set child object to the parent
                  setPropertyValue(pParent, property, child[0]);
              }
              else if (mapType.equals(ObjectMapper.COLLECTIONMAP)) {
                  // COLLECTION Mapping
  
                  // Get property mapping for child object
                  Hashtable mapping = pOM.getPropertyMapping(property);
  
                  // Find id and put in where hash
                  Hashtable where = new Hashtable();
                  String foreignKey = (String) mapping.get(".foreignKey");
                  if (foreignKey != null) {
                      where.put(".foreignKey", id);
                  }
  		
                  DBObject dbr = new DBObject();
                  dbr.mapping = mapping; // ugh...
                  // Read the objects
                  Object[] objs = readObjects(dbr, where);
  
                  // Put the objects in a hash
                  Hashtable children = new Hashtable();
                  for (int i = 0; i < objs.length; i++) {
                      children.put(((DBObject) objs[i]).getId(), 
                                   ((DBObject) objs[i]).getObject());
                  }
  		
                  // Set child properties to parent object
                  setPropertyValue(pParent, property, children);
              }
          }
      }