private function classMemberList($doc_comment, ModifiersNode $modifiers) {
    // Modifier checks
    if ($modifiers->getAbstract()) {
      throw new ParserException(
        $this->filename,
        $this->iterator->getLineNumber(),
        $this->iterator->getColumnNumber(),
        "members can not be declared abstract");
    }
    if ($modifiers->getFinal()) {
      throw new ParserException(
        $this->filename,
        $this->iterator->getLineNumber(),
        $this->iterator->getColumnNumber(),
        "members can not be declared final");
    }
    $node = new ClassMemberListNode();
    $node->mergeNode($doc_comment);
    $node->mergeNode($modifiers);
    $members = new CommaListNode();
    do {
      $members->addChild($this->classMember());
    } while ($this->tryMatch(',', $members));
    $node->addChild($members, 'members');
    $this->endStatement($node);
    return $node;
  }