public function set($key, $value, $dot_syntax = true)
    {
        if ($dot_syntax === true) {

            $paths = explode('.', $key);
            $pathCount = count($paths);
            $currentIteration = 0;
            $node =& $this->_data;
            foreach ($paths as $path) {
                if (isset($node[$path])) {
                    $node =& $node[$path];
                    $currentIteration++;
                } elseif($currentIteration < $pathCount) {
                    $node[$path] = array();
                    $node =& $node[$path];
                    $currentIteration++;
                }
            }
            
            $node = $value;
            
        } else {
            
            $this->_data[$key] = $value;
            
        }

        return $this;
    }