private function SaveTypeDefToJson()
    {
        $typedefs = array();
        
        foreach($this->symbols->headers as $header)
        {
            if(!$header->HasTypeDefs())
                continue;
            
            foreach($header->namespaces as $namespace)
            {
                if(!$namespace->HasTypeDefs())
                    continue;
                
                foreach($namespace->type_definitions as $typedef)
                {
                    if(trim($typedef->description))
                    {
                        $typedefs[$header->name][$namespace->name]
                            [$typedef->name] = [
                                "type" => $typedef->original_type,
                                "description" => $typedef->description
                            ]
                        ;
                    }
                    else
                    {
                        $typedefs[$header->name][$namespace->name]
                            [$typedef->name] = [
                                "type" => $typedef->original_type
                            ]
                        ;
                    }
                }
            }
        }
        
        if(count($typedefs) > 0)
        {
            file_put_contents(
                $this->definitions_path . "type_definitions.json", 
                Json::Encode($typedefs)
            );

            unset($typedefs);
        }
    }