protected static function flattenPath(array $path)
    {
        $string = '';
        
        foreach ($path as $i => $segment) {
            if (\is_numeric($segment)) {
                $string .= '[' . $segment . ']';
                
                continue;
            }
            
            if ($i != 0) {
                $string .= '.';
            }
            
            if (\is_array($segment)) {
                $string .= $segment[0] . '(';
                
                foreach ($segment[1] as $j => $arg) {
                    if ($j != 0) {
                        $string .= ', ';
                    }
                    
                    $string .= $arg;
                }
                
                $string .= ')';
            } else {
                $string .= $segment;
            }
        }
        
        return $string;
    }