public function getSectionChildren($reference, $levelsDown = null)
    {
        $reference = strtolower(Section::normalizeReference($reference));
        $this->sortSections();

        $sectionKeys = array_keys($this->sections);
        $sections = array();

        $maxDepth = null;
        if ($levelsDown !== null) {
            $maxDepth = Section::calcDepth($reference) + $levelsDown;
        }

        $reference = Section::trimReference($reference);
        $reference .= '.';

        foreach ($sectionKeys as $sectionKey) {
            $testSectionKey = strtolower(Section::normalizeReference($sectionKey));
            // Only get sections within that level. Do not get the level itself
            if (strpos($testSectionKey . '.', $reference) === 0
                && $testSectionKey . '.' != $reference
            ) {
                $section = $this->sections[$sectionKey];
                if ($maxDepth !== null && $section->getDepth() > $maxDepth) {
                    continue;
                }
                $sections[$sectionKey] = $section;
            }
        }

        return $sections;
    }