private function parameter() {
    $node = new ParameterNode();
    if ($type = $this->optionalTypeHint()) {
      $node->addChild($type, 'typeHint');
    }
    $this->tryMatch('&', $node, 'reference');
    $this->tryMatch(T_ELLIPSIS, $node, 'variadic');
    $this->mustMatch(T_VARIABLE, $node, 'name', TRUE);
    if ($this->tryMatch('=', $node)) {
      $node->addChild($this->staticScalar(), 'value');
    }
    return $node;
  }