/**
  * {@inheritdoc}
  */
 public function rewind()
 {
     $this->action = $this->context->getAction();
     $this->index = -1;
     $this->maxIndex = isset($this->processors[$this->action]) ? count($this->processors[$this->action]) - 1 : -1;
     $this->nextApplicable();
 }
 /**
  * {@inheritdoc}
  */
 public function isApplicable(ContextInterface $context, array $processorAttributes)
 {
     if (null === $this->processorBag || empty($processorAttributes['group']) || !$context->getFirstGroup() && !$context->getLastGroup()) {
         return self::ABSTAIN;
     }
     $this->ensureGroupsLoaded($context->getAction());
     $group = $processorAttributes['group'];
     if (isset($this->groups[$group])) {
         $groupIndex = $this->groups[$group];
         $firstGroup = $context->getFirstGroup();
         if ($firstGroup && isset($this->groups[$firstGroup]) && $groupIndex < $this->groups[$firstGroup]) {
             return self::NOT_APPLICABLE;
         }
         $lastGroup = $context->getLastGroup();
         if ($lastGroup && isset($this->groups[$lastGroup]) && $groupIndex > $this->groups[$lastGroup]) {
             return self::NOT_APPLICABLE;
         }
     }
     return self::ABSTAIN;
 }