/**
  * Run Action
  *
  * @param \PHP\Manipulator\TokenContainer $container
  */
 public function run(TokenContainer $container)
 {
     $this->_container = $container;
     $iterator = $container->getIterator();
     $lastElse = null;
     $noOtherTokens = true;
     while ($iterator->valid()) {
         $token = $iterator->current();
         if ($this->isType($token, T_ELSE)) {
             $lastElse = $token;
             $noOtherTokens = true;
         }
         if (null !== $lastElse && !$this->_isAllowedTokenInsideEmptyElse($token)) {
             $noOtherTokens = false;
         }
         if ($this->_isEndElse($token) && true === $noOtherTokens && null !== $lastElse) {
             $start = $lastElse;
             $end = $token;
             $previous = $container->getPreviousToken($start);
             if ($this->isType($end, T_ENDIF)) {
                 $end = $container->getPreviousToken($end);
             }
             $container->removeTokensFromTo($start, $end);
             $iterator->update($previous);
             $lastElse = null;
         }
         $iterator->next();
     }
     $container->retokenize();
 }
 /**
  * @covers \PHP\Manipulator\TokenContainer::removeTokensFromTo
  */
 public function testRemoveTokensFromTo()
 {
     $t1 = Token::factory('Token1');
     $t2 = Token::factory('Token2');
     $t3 = Token::factory('Token3');
     $t4 = Token::factory('Token4');
     $t5 = Token::factory('Token5');
     $container = new TokenContainer(array($t1, $t2, $t3, $t4, $t5));
     $container->removeTokensFromTo($t2, $t4);
     $array = $container->toArray();
     $this->assertCount(2, $array);
     $this->assertContains($t1, $array);
     $this->assertContains($t5, $array);
 }