public function rewriteChildren()

in codegen/syntax/ClassishDeclaration.hack [221:284]


  public function rewriteChildren<Tret as ?Node>(
    (function(Node, vec<Node>): Tret) $rewriter,
    vec<Node> $parents = vec[],
  ): this {
    $parents[] = $this;
    $attribute = $this->_attribute === null
      ? null
      : $rewriter($this->_attribute, $parents);
    $modifiers = $this->_modifiers === null
      ? null
      : $rewriter($this->_modifiers, $parents);
    $xhp = $this->_xhp === null ? null : $rewriter($this->_xhp, $parents);
    $keyword = $rewriter($this->_keyword, $parents);
    $name = $rewriter($this->_name, $parents);
    $type_parameters = $this->_type_parameters === null
      ? null
      : $rewriter($this->_type_parameters, $parents);
    $extends_keyword = $this->_extends_keyword === null
      ? null
      : $rewriter($this->_extends_keyword, $parents);
    $extends_list = $this->_extends_list === null
      ? null
      : $rewriter($this->_extends_list, $parents);
    $implements_keyword = $this->_implements_keyword === null
      ? null
      : $rewriter($this->_implements_keyword, $parents);
    $implements_list = $this->_implements_list === null
      ? null
      : $rewriter($this->_implements_list, $parents);
    $where_clause = $this->_where_clause === null
      ? null
      : $rewriter($this->_where_clause, $parents);
    $body = $rewriter($this->_body, $parents);
    if (
      $attribute === $this->_attribute &&
      $modifiers === $this->_modifiers &&
      $xhp === $this->_xhp &&
      $keyword === $this->_keyword &&
      $name === $this->_name &&
      $type_parameters === $this->_type_parameters &&
      $extends_keyword === $this->_extends_keyword &&
      $extends_list === $this->_extends_list &&
      $implements_keyword === $this->_implements_keyword &&
      $implements_list === $this->_implements_list &&
      $where_clause === $this->_where_clause &&
      $body === $this->_body
    ) {
      return $this;
    }
    return new static(
      $attribute as ?OldAttributeSpecification,
      /* HH_FIXME[4110] ?NodeList<Token> may not be enforceable */ $modifiers,
      $xhp as ?Node,
      $keyword as Token,
      $name as Token,
      $type_parameters as ?TypeParameters,
      $extends_keyword as ?ExtendsToken,
      /* HH_FIXME[4110] ?NodeList<ListItem<ISimpleCreationSpecifier>> may not be enforceable */ $extends_list,
      $implements_keyword as ?ImplementsToken,
      /* HH_FIXME[4110] ?NodeList<ListItem<ISimpleCreationSpecifier>> may not be enforceable */ $implements_list,
      $where_clause as ?Node,
      $body as ClassishBody,
    );
  }