public function generate() : string
    {
        $buffer = "<?php\n\n";

        // add namespace if needed
        if (!is_null($this->containerNamespace))
        {
            $buffer .= "namespace " . $this->containerNamespace . ";\n\n";
        }

        // add use statement for the super container
        $aliasContainerName = 'ClanCatsContainer' . md5($this->containerName);
        $buffer .= "use " . Container::class . " as " . $aliasContainerName . ";\n\n";

        // generate the the class
        $buffer .= "class $this->containerClassName extends $aliasContainerName {\n\n";

        $buffer .= $this->generateParameters() . "\n";
        $buffer .= $this->generateMetaData() . "\n";
        $buffer .= $this->generateResolverTypes() . "\n";
        $buffer .= $this->generateResolverMappings() . "\n";
        $buffer .= $this->generateResolverMethods() . "\n";

        return $buffer . "\n}";
    }