public function getIn($data, $where, $strict = false)
    {
        if (is_object($data)) {
            $clone = clone $data;
            $data = \Foil\arraize($clone, $this->autoescape);
        } elseif (! is_array($data)) {
            return $this->autoescape ? $this->escaper->escape($data) : $data;
        }
        $where = is_string($where) ? explode('.', $where) : (array) $where;
        $get = igorw\get_in($data, $where);
        if (! $strict || ! $this->strict || ! is_null($get)) {
            return $get;
        }
        $name = implode('.', $where);
        if ($this->strict === 'notice') {
            return trigger_error("{$name} is not defined.");
        }
        throw new RuntimeException("{$name} is not defined.");
    }