public function _MergeExpansionNode(NodeBase $objNewNode)
    {
        if (!$objNewNode || empty($objNewNode->objChildNodeArray)) {
            return;
        }
        if ($objNewNode->strName != $this->strName) {
            throw new Caller('Expansion node tables must match.');
        }

        if (!$this->objChildNodeArray) {
            $this->objChildNodeArray = $objNewNode->objChildNodeArray;
        } else {
            $objChildNode = reset($objNewNode->objChildNodeArray);
            if (isset ($this->objChildNodeArray[$objChildNode->strAlias])) {
                if ($objChildNode->blnExpandAsArray) {
                    $this->objChildNodeArray[$objChildNode->strAlias]->blnExpandAsArray = true;
                    // assume this is a leaf node, so don't follow any more.
                } else {
                    $this->objChildNodeArray[$objChildNode->strAlias]->_MergeExpansionNode($objChildNode);
                }
            } else {
                $this->objChildNodeArray[$objChildNode->strAlias] = $objChildNode;
            }
        }
    }