src/org/nutz/ioc/loader/map/MapLoader.java
public IocObject load(IocLoading loading, String name) throws ObjectLoadException {
        Map<String, Object> m = getMap(name);
        if (null == m)
            throw new ObjectLoadException("Object '" + name + "' without define!");
        // If has parent
        Object p = m.get("parent");
        if (null != p) {
            checkParents(name);
            IocObject parent = load(loading, p.toString());
            // create new map without parent
            Map<String, Object> newMap = new HashMap<String, Object>();
            for (Entry<String, Object> en : m.entrySet()) {
                if ("parent".equals(en.getKey()))
                    continue;
                newMap.put(en.getKey(), en.getValue());
            }
            // Create self IocObject
            IocObject self = loading.map2iobj(newMap);

            // Merge with parent
            return Iocs.mergeWith(self, parent);
        }
        return loading.map2iobj(m);
    }
public IocObject load(IocLoading loading, String name) throws ObjectLoadException {
        Map<String, Object> m = getMap(name);
        if (null == m)
            throw new ObjectLoadException("Object '" + name + "' without define!");
        // If has parent
        Object p = m.get("parent");
        if (null != p) {
            checkParents(name);
            IocObject parent = load(loading, p.toString());
            // create new map without parent
            Map<String, Object> newMap = new HashMap<String, Object>();
            for (Entry<String, Object> en : m.entrySet()) {
                if ("parent".equals(en.getKey()))
                    continue;
                newMap.put(en.getKey(), en.getValue());
            }
            // Create self IocObject
            IocObject self = loading.map2iobj(newMap);

            // Merge with parent
            return Iocs.mergeWith(self, parent);
        }
        return loading.map2iobj(m);
    }
{@link ObjectLoadException}