public function processMethod(
        $name,
        AnnotationCollection $annotations,
        ArrayObject $config
    ) {
        if (!preg_match('/^(.*)Action$/i', $name, $match)) {
            return;
        }

        $actionName = $match[1];

        $routeType = null;
        $routeName = null;
        $routeRoute = null;
        $defaults = array();
        $constraints = array();

        foreach ($annotations as $annotation) {
            if ($annotation instanceof Annotation\Route) {
                $routeType = $annotation->getType();
                $routeName = $annotation->getName();
                $routeRoute = $annotation->getRoute();
            } elseif ($annotation instanceof Annotation\DefaultValue) {
                $defaults[$annotation->getParam()] = $annotation->getValue();
            } elseif ($annotation instanceof Annotation\Constraint) {
                $constraints[$annotation->getParam()] = $annotation->getRule();
            }
        }

        if (null === $routeType) {
            return;
        }

        // @todo Verify all required values are set

        $defaults['action'] = $actionName;
        $defaults['controller'] = $this->controllerName;

        if ($routeName[0] !== '/' && null !== $this->baseName) {
            $routeName = $this->baseName . '/' . $routeName;
        }

        $settings = &$this->findConfigSection($routeName, $config);

        $settings['type'] = $routeType;

        $settings['options'] = array(
                'route' => $routeRoute,
                'constraints' => $constraints,
                'defaults' => $defaults,
        );
    }