@param string     $key
@param array|null $parent

@throws NotFoundException

@return mixed
180832
private function getRecursive(string $key, array $parent = null)
    {
        if ($parent !== null ? \array_key_exists($key, $parent) : parent::has($key)) {
            return $parent !== null ? $parent[$key] : parent::get($key);
        }

        $keySegments = \explode('.', $key);
        $keyParts = [];

        while (\count($keySegments) > 1) {
            \array_unshift($keyParts, \array_pop($keySegments));
            $subKey = \implode('.', $keySegments);

            if ($parent !== null ? \array_key_exists($subKey, $parent) : parent::has($subKey)) {
                $parent = $parent !== null ? $parent[$subKey] : parent::get($subKey);

                if (!\is_array($parent)) {
                    break;
                }

                return $this->getRecursive(\implode('.', $keyParts), $parent);
            }
        }

        throw new NotFoundException(\sprintf('Entry "%s" not found', $key));
    }
164103
function delete($key) {
        if(\is_array($key) || \is_object($key)) {
            throw new \InvalidArgumentException('Key can not be an array or object');
        }
        
        $key = (string) $key;
        return parent::delete($key);
    }
431906
final public function parent(string $parent)
    {
        if (!$this->allowParent) {
            throw new InvalidArgumentException(sprintf('A parent cannot be defined when either "_instanceof" or "_defaults" are also defined for service prototype "%s".', $this->id));
        }

        if ($this->definition instanceof ChildDefinition) {
            $this->definition->setParent($parent);
        } elseif ($this->definition->isAutoconfigured()) {
            throw new InvalidArgumentException(sprintf('The service "%s" cannot have a "parent" and also have "autoconfigure". Try disabling autoconfiguration for the service.', $this->id));
        } elseif ($this->definition->getBindings()) {
            throw new InvalidArgumentException(sprintf('The service "%s" cannot have a "parent" and also "bind" arguments.', $this->id));
        } else {
            // cast Definition to ChildDefinition
            $definition = serialize($this->definition);
            $definition = substr_replace($definition, '53', 2, 2);
            $definition = substr_replace($definition, 'Child', 44, 0);
            $definition = unserialize($definition);

            $this->definition = $definition->setParent($parent);
        }

        return $this;
    }
170455
public function get($key, $default = null)
    {
        if (\array_key_exists($key, $this->data)) {
            return $this->data[$key];
        }

        if (null === $this->parent) {
            return $default;
        }

        return $this->parent->get($key, $default);
    }
1242897
public function &getAttributeValue(string $key)
    {
        if ($key !== 'layout') {
            return parent::getAttributeValue($key);
        }

        if ( ! isset($this->attributes[$key]) || ! is_array($this->attributes[$key])) {
            $null = null;
            return $null;
        }

        // If object is an array, interpret it by type and make the corresponding data object.
        $this->decorateLayoutAttribute($key);

        return $this->attributes[$key];
    }
577870
public function getAttribute($key)
    {
        $value = parent::getAttribute($key);

        if (($value === null || $value === '') && property_exists($this, 'defaults') && array_key_exists($key, $this->defaults)) {
            $value = $this->defaults[$key];
        }

        return $value;
    }
1012563
public function loadInlineFields($parentKey)
    {
        $json = $this->load();
        $inlineFields = array();
        foreach ($json as $table) {
            if ($table["tca"]) {
                foreach ($table["tca"] as $key => $tca) {
                    if ($tca["inlineParent"] == $parentKey) {
                        if ($tca["config"]["type"] == "inline") {
                            $tca["inlineFields"] = $this->loadInlineFields($key);
                        }
                        $tca["maskKey"] = "tx_mask_" . $tca["key"];
                        $inlineFields[] = $tca;
                    }
                }
            }
        }
        return $inlineFields;
    }
348646
public function __isset($key)
    {
        return parent::__isset($key) || parent::__isset($this->getSnakeKey($key));
    }
645783
protected function after($key = null)
    {
        if (! $this->after) {
            $this->after = $this->parseData($this->activity->after);
        }

        if (! $key) {
            return array_keys($this->after);
        }

        if (! isset($this->after[$key]) || $this->after[$key] === '') {
            return null;
        }

        return $this->after[$key];
    }
665904
public function get($key = null)
    {
        if (null === $key) {
            return $this->get;
        }

        return isset($this->get[$key]) ? $this->get[$key] : null;
    }
938464
public static function flattenParams($params, $parentKey = null)
    {
        $result = [];

        foreach ($params as $key => $value) {
            $calculatedKey = $parentKey ? "{$parentKey}[{$key}]" : $key;

            if (self::isList($value)) {
                $result = array_merge($result, self::flattenParamsList($value, $calculatedKey));
            } elseif (is_array($value)) {
                $result = array_merge($result, self::flattenParams($value, $calculatedKey));
            } else {
                array_push($result, [$calculatedKey, $value]);
            }
        }

        return $result;
    }
1201475
public function offsetGet($key)
    {
        if (isset($this->attributes[$key])) {
            return $this->attributes[$key];
        }

        return parent::offsetGet($key);
    }
169919
function get($key, $default = null)
    {
        $key = $this->_normalizeKey($key);

        $properties = &$this->_referDataArrayReference();

        // avoid recursive trait call, may conflict on classes that
        // implement in this case has() method
        /*if (
            !array_key_exists($key, $properties)
            && $default === null
        )
            throw new \Exception(sprintf(
                'Property (%s) not found in entity.', $key
            ));*/

        return (array_key_exists($key, $properties))
            ? $properties[$key]
            : $default;
    }
248160
public function getParent(string $id = null)
    {
        if (!$this->_parents || ($id !== null && !isset($this->_parents[$id]))) {
            return null;
        }

        return $id !== null ?
            $this->_parents[$id] :
            $this->_parents[array_rand($this->_parents)];
    }
1107062
public function forget($key)
    {
        if (is_array($key)) {
            return $this->forgetMany($key);
        }

        return parent::forget($key);
    }
1316261
public function get($key)
    {
        if (mb_strpos($key, $this->delimiter) !== false) {
            return $this->getChild($key);
        }

        return parent::get($key);
    }
504113
public function getParam($key)
    {
        return null !== $this->getDraft() ? $this->getDraft()->getParam($key) : parent::getParam($key);
    }