public function rewriteChildren()

in codegen/syntax/EnumClassDeclaration.hack [218:273]


  public function rewriteChildren<Tret as ?Node>(
    (function(Node, vec<Node>): Tret) $rewriter,
    vec<Node> $parents = vec[],
  ): this {
    $parents[] = $this;
    $attribute_spec = $this->_attribute_spec === null
      ? null
      : $rewriter($this->_attribute_spec, $parents);
    $modifiers = $this->_modifiers === null
      ? null
      : $rewriter($this->_modifiers, $parents);
    $enum_keyword = $rewriter($this->_enum_keyword, $parents);
    $class_keyword = $rewriter($this->_class_keyword, $parents);
    $name = $rewriter($this->_name, $parents);
    $colon = $rewriter($this->_colon, $parents);
    $base = $rewriter($this->_base, $parents);
    $extends =
      $this->_extends === null ? null : $rewriter($this->_extends, $parents);
    $extends_list = $this->_extends_list === null
      ? null
      : $rewriter($this->_extends_list, $parents);
    $left_brace = $rewriter($this->_left_brace, $parents);
    $elements =
      $this->_elements === null ? null : $rewriter($this->_elements, $parents);
    $right_brace = $rewriter($this->_right_brace, $parents);
    if (
      $attribute_spec === $this->_attribute_spec &&
      $modifiers === $this->_modifiers &&
      $enum_keyword === $this->_enum_keyword &&
      $class_keyword === $this->_class_keyword &&
      $name === $this->_name &&
      $colon === $this->_colon &&
      $base === $this->_base &&
      $extends === $this->_extends &&
      $extends_list === $this->_extends_list &&
      $left_brace === $this->_left_brace &&
      $elements === $this->_elements &&
      $right_brace === $this->_right_brace
    ) {
      return $this;
    }
    return new static(
      $attribute_spec as ?OldAttributeSpecification,
      /* HH_FIXME[4110] ?NodeList<AbstractToken> may not be enforceable */ $modifiers,
      $enum_keyword as EnumToken,
      $class_keyword as ClassToken,
      $name as NameToken,
      $colon as ColonToken,
      $base as ISimpleCreationSpecifier,
      $extends as ?ExtendsToken,
      /* HH_FIXME[4110] ?NodeList<ListItem<SimpleTypeSpecifier>> may not be enforceable */ $extends_list,
      $left_brace as LeftBraceToken,
      /* HH_FIXME[4110] ?NodeList<EnumClassEnumerator> may not be enforceable */ $elements,
      $right_brace as RightBraceToken,
    );
  }