public function render()
    {
        // Verify that we do not make the mistake of braking session when debugging with echoes!
        $file = '';
        $line = '';

        if (true === headers_sent($file, $line)) {
            throw new Doozr_Form_Service_Exception(
                sprintf(
                    'If any output is sent before render() was successfully called '.
                    'then transportation of token can not be guaranteed! File %s Line %s',
                    $file,
                    $line
                )
            );
        }

        // Transfer required data transparently to form and it components so the developer doesn't need to but can.
        // We use the POST as default and accept GET for the step 1 in general as well.
        // So the user does not need to adjust the transport method but he can. So if we got null on getMethod()
        // when rendering, we should inject the POST if we got a result, the dev probably has configured some
        // transport and we will use this value instead.
        $requestMethod = $this->getForm()->getMethod();
        if (null !== $requestMethod) {
            $this->setMethod($requestMethod);
        } else {
            $this->getForm()->setMethod($this->getMethod());
        }

        // Generate a fresh token, store all the meta information and ensure that storage is up to date!
        $this
            ->token($this->getTokenHandler()->generateToken())
            ->addMetaComponents()
            ->handleBackgroundDataTransfer();

        // Return the result from rendering (depends on renderer passed in)
        return $this->getForm()->render()->get();
    }