private function _while() {
    $node = new WhileNode();
    $this->mustMatch(T_WHILE, $node);
    $this->condition($node, 'condition');
    if ($this->tryMatch(':', $node, 'openColon', FALSE, TRUE)) {
      $node->addChild($this->innerStatementListNode(T_ENDWHILE), 'body');
      $this->mustMatch(T_ENDWHILE, $node, 'endKeyword');
      $this->endStatement($node);
      return $node;
    }
    else {
      $this->matchHidden($node);
      $node->addChild($this->statement(), 'body');
      return $node;
    }
  }