public function generateWSDL($withAnnotation = false)
    {
        $qNameClassName = WSDL::typeToQName($this->class);

        $this->wsdl = new WSDL($qNameClassName, $this->uri, $this->xslUri);

        $port = $this->wsdl->addPortType($qNameClassName . 'Port');
        $binding = $this->wsdl->addBinding($qNameClassName . 'Binding', 'tns:' . $qNameClassName . 'Port');

        $this->wsdl->addSoapBinding($binding, $this->bindingStyle['style'], $this->bindingStyle['transport']);
        $this->wsdl->addService(
            $qNameClassName . 'Service', $qNameClassName . 'Port',
            'tns:' . $qNameClassName . 'Binding',
            $this->uri
        );

        $ref = new ReflectionClass($this->class);
        foreach ($ref->getMethods() as $method) {
            if ($withAnnotation === false || $method->getReflectionDocComment()->getAnnotationsCollection()->hasAnnotationTag('soap')) {
                $this->addMethodToWsdl($method, $port, $binding);
            }
        }
    }