public function stageChildren($showAll = false, $skipParentIDFilter = false)
    {
        $hideFromHierarchy = $this->owner->config()->hide_from_hierarchy;
        $hideFromCMSTree = $this->owner->config()->hide_from_cms_tree;
        $baseClass = $this->owner->baseClass();
        $baseTable = $this->owner->baseTable();
        $staged = DataObject::get($baseClass)->where(sprintf(
            '%s.%s <> %s.%s',
            Convert::symbol2sql($baseTable),
            Convert::symbol2sql("ParentID"),
            Convert::symbol2sql($baseTable),
            Convert::symbol2sql("ID")
        ));

        if (!$skipParentIDFilter) {
            // There's no filtering by ID if we don't have an ID.
            $staged = $staged->filter('ParentID', (int)$this->owner->ID);
        }

        if ($hideFromHierarchy) {
            $staged = $staged->exclude('ClassName', $hideFromHierarchy);
        }
        if ($hideFromCMSTree && $this->showingCMSTree()) {
            $staged = $staged->exclude('ClassName', $hideFromCMSTree);
        }
        if (!$showAll && DataObject::getSchema()->fieldSpec($this->owner, 'ShowInMenus')) {
            $staged = $staged->filter('ShowInMenus', 1);
        }
        $this->owner->extend("augmentStageChildren", $staged, $showAll);
        return $staged;
    }