public function realiseAllSources($node, $sourceTo = null, &$addTo = null)
    {
        if (!$addTo) {
            $addTo = array();
        }
        
        $myIdent = $this->idStr($node);
        
        // if needbe, update the source map
        if ($sourceTo) {
            $sourceMap = $this->getCache()->load(self::SOURCES_MAP);
            if (!$sourceMap) {
                $sourceMap = array();
            }

            $myTree = isset($sourceMap[$myIdent]) ? $sourceMap[$myIdent] : array();
        
            $myTree[$sourceTo] = 1;
            $sourceMap[$myIdent] = $myTree;
            $this->getCache()->save($sourceMap, self::SOURCES_MAP);
        }

        $parents = $this->getEffectiveParents($node);
        if ($parents) {
            foreach ($parents as $parent) {
                $addTo[] = "{$parent->ClassName},$parent->ID";
                $this->realiseAllSources($parent, $myIdent, $addTo);
            }
        }
        
        $key = "sources_$myIdent";
        $this->getCache()->save($addTo, $key);
        
        return $addTo;
    }