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

        $value = $default;
        if ($this->isDotNotation($key)) {
            $keys = explode('.', $key);
            $value = $this->data;

            foreach ($keys as $segment) {
                if (!is_array($value) || !array_key_exists($segment, $value)) {
                    $value = $default;
                    break;
                }

                $value = $value[$segment];
            }
        }

        return $value;
    }