if (key == null) { return null; }
    private Object reify(Session ssn, Path path) {        Object key = key(path);        ObjectData odata = ssn.getObjectDataByKey(key);        if (odata == null) {            ObjectType type = m_signature.getType(path);            Collection props = type.getKeyProperties();            PropertyMap pmap = new PropertyMap(type);            for (Iterator it = props.iterator(); it.hasNext(); ) {                Property p = (Property) it.next();                pmap.put(p, get(ssn, Path.add(path, p.getName())));            }            Adapter ad = ssn.getRoot().getAdapter(type);            if (LOG.isDebugEnabled()) {                LOG.debug("resurecting: " + pmap);            }            Object obj = ad.getObject(type, pmap, ssn);            odata = new ObjectData(ssn, obj, ObjectData.NUBILE);            ssn.setSessionKey(obj, key);            odata.setObjectMap(getObjectMap(path));        }        return odata.getObject();    }