protected function &searchTree(
        /*# string */ $key,
        /*# array */ &$tree,
        /*# bool */ $create = false
    ) {
        $found = &$tree;
        $parts = explode($this->field_splitter, $key);
        while (null !== ($part = array_shift($parts))) {
            if (!isset($found[$part])) {
                if ($create) {
                    $found[$part] = [];
                } else {
                    $bad = null;
                    return $bad;
                }
            }
            $found = &$found[$part];
        }
        return $found;
    }