public function generate(string $path, string $namespace, string $name)
    {
        $name = $this->camelize($name);

        $vars = [
            'NAMESPACE'       => $namespace,
            'NAME'            => $name,
            'NAME:CAMELIZED'  => $name,
            'NAME:UNDERSCORE' => $this->underscore($name),
            'NAME:UPPERCASE'  => strtoupper($name),
        ];

        $this->put('/Models/Model.php.stub', $path.'/Models/'.$name.'.php', $vars);
        $this->put('/Managers/Manager.php.stub', $path.'/Managers/'.$name.'Manager.php', $vars);
        $this->put('/Schemas/Schema.php.stub', $path.'/Schemas/'.$name.'Schema.php', $vars);
        $this->put('/Repositories/Repository.php.stub', $path.'/Repositories/'.$name.'Repository.php', $vars);
        $this->put('/Validators/Validator.php.stub', $path.'/Validators/'.$name.'Validator.php', $vars);
        $this->put('/Serializers/Serializer.php.stub', $path.'/Serializers/'.$name.'Serializer.php', $vars);
        $this->put('/Authorizers/Authorizer.php.stub', $path.'/Authorizers/'.$name.'Authorizer.php', $vars);
        $this->put('/Fakers/Faker.php.stub', $path.'/Fakers/'.$name.'Faker.php', $vars);
    }