protected function createCodeForClass($methods)
    {
        $implements = '';        
        $interfaces = $this->reflection->getInterfaces();

        // exclude interfaces
        $interfaces = array_diff($interfaces, ['Traversable', 'Throwable']);

        if (count($interfaces) > 0) {
            $implements = 'implements ' . implode(', ', $interfaces);
        }

        $code = 'class ' . $this->mock_class . ' extends ' . $this->mock_base . ' ' . $implements . " {\n";
        $code .= "    function __construct() {\n";
        $code .= "        parent::__construct();\n";
        $code .= "    }\n";
        $code .= $this->createCodeForConstructor();
        $code .= $this->createCodeForMethods($methods);
        $code .= "}\n";

        // TODO Reminder, uncomment to see the code of the generated Mock object.
        //if($this->mock_class === 'MockDummyInterface') {
        //    var_dump($code);
        //}

        return $code;
    }