private function SaveFunctionsToJson()
    {
        $functions = array();
        
        foreach($this->symbols->headers as $header)
        {
            if(!$header->HasFunctions())
                continue;
            
            foreach($header->namespaces as $namespace)
            {
                if(!$namespace->HasFunctions())
                    continue;
                
                foreach($namespace->functions as $function)
                {
                    foreach($function->overloads as $overload)
                    {
                        $parameters = array();
                        
                        if($overload->HasParameters())
                        {
                            foreach($overload->parameters as $parameter)
                            {
                                $parameter_array = array();
                                
                                $parameter_array["name"] = $parameter->name;
                                $parameter_array["type"] = $parameter->original_type;
                                
                                if($parameter->is_array)
                                    $parameter_array["is_array"] = $parameter->is_array;
                                
                                if($parameter->default_value)
                                    $parameter_array["value"] = $parameter->default_value;
                                
                                
                                if(trim($parameter->description))
                                    $parameter_array["description"] = $parameter->description;
                                
                                $parameters[] = $parameter_array;
                                
                            }
                            
                            $functions[$header->name][$namespace->name]
                                [$function->name][] = [
                                    "description" => $overload->description,
                                    "return_type" => $overload->return_type->original_type,
                                    "parameters" => $parameters
                                ]
                            ;
                        }
                        else
                        {
                            $functions[$header->name][$namespace->name]
                                [$function->name][] = [
                                    "description" => $overload->description,
                                    "return_type" => $overload->return_type->original_type
                                ]
                            ;
                        }
                    }
                }
            }
        }
        
        if(count($functions) > 0)
        {
            file_put_contents(
                $this->definitions_path . "functions.json", 
                Json::Encode($functions)
            );

            unset($functions);
        }
    }