objs.put(p, m_adapter.load (m_signature.getProperty(p).getType(), (Map) me.getValue()));
ot = m_signature.getProperty(p).getType();
    Object load(Session ssn) {        Collection paths = m_signature.getPaths();        ObjectType type = m_signature.getObjectType();        HashMap keys = new HashMap();        // First load up the objects.        for (Iterator it = paths.iterator(); it.hasNext(); ) {            Path p = (Path) it.next();            Path parent = p.getParent();            if (type.isKey(p)) {                Object value = get(p);                Map key;                if (keys.containsKey(parent)) {                    key = (Map) keys.get(parent);                } else {                    if (value == null) {                        key = null;                    } else {                        key = new HashMap();                    }                    keys.put(parent, key);                }                if (value != null) {                    key.put(p.getName(), value);                }            }        }        HashMap objs = new HashMap();        // Instantiate all the objects        for (Iterator it = keys.entrySet().iterator(); it.hasNext(); ) {            Map.Entry me = (Map.Entry) it.next();            if (me.getValue() == null) {                objs.put(me.getKey(), null);            } else {                Path p = (Path) me.getKey();                if (p == null) {                    objs.put(p, m_adapter.load                             (type.getBasetype(), (Map) me.getValue()));                } else {                    objs.put(p, m_adapter.load                             (m_signature.getProperty(p).getType(),                              (Map) me.getValue()));                }            }        }        // Now load up the values.        for (Iterator it = paths.iterator(); it.hasNext(); ) {            Path p = (Path) it.next();            Path parent = p.getParent();            Object obj = objs.get(parent);            if (obj == null) {                Object value = get(p);                if (value != null) {                    throw new IllegalStateException                        ("key was null but value isn't");                }            } else {                Property prop = m_signature.getProperty(p);                ssn.load(obj, prop, get(p));            }        }        return objs.get(null);    }