public function describe()
    {
        $methods = array();
        $methodAnnotations = $this->reader->getMethodsAnnotations();

        foreach ($this->reflection->getMethods() as $method) {
            $name = $method->getName();

            if (isset($methodAnnotations[$name])) {
                if ($methodAnnotations[$name]->has('Action') || $methodAnnotations[$name]->has('action')) {
                    $methods[] = $method->getName();
                }
            }
        }

        $name = $this->className;
        $description = '';

        if ($this->reflection->hasProperty('name')) {
            $prop = $this->reflection->getProperty('name');
            $prop->setAccessible(true);
            $name = $prop->getValue($this->reflection->newInstance());
        }

        if ($this->reflection->hasProperty('description')) {
            $prop = $this->reflection->getProperty('description');
            $prop->setAccessible(true);
            $description = $prop->getValue($this->reflection->newInstance());
        }

        return array(
            'name' => $name,
            'description' => $description,
            'class' => $this->className,
            'actions'  => $methods
        );
    }