public function generateClasses($requestNamespace = null, $responseNamespace = null, $structureNamespace = null)
    {
        $classGenerator = $this->getClassGenerator();
        if ($constructorGenerator = $this->getConstructorGenerator()) {
            $classGenerator->addMethodFromGenerator($constructorGenerator);
        }
        if ($requestNamespace) {
            $classGenerator->addUse($requestNamespace, self::REQUEST_NAMESPACE_ALIAS);
        }
        if ($responseNamespace) {
            $classGenerator->addUse($responseNamespace, self::RESPONSE_NAMESPACE_ALIAS);
        }
        if ($structureNamespace) {
            $classGenerator->addUse($structureNamespace, self::STRUCTURE_NAMESPACE_ALIAS);
        }

        foreach ($this->getServices() as $service) {
            $serviceGenerator = new Rest\Service;
            $serviceGenerator->setClassGenerator(clone $classGenerator);
            $serviceGenerator->setDescription($service);
            $serviceGenerator->generate();

            $this->transformService($serviceGenerator);

            $this->addClass($serviceGenerator);
        }

        return $this->getClasses();
    }