public function rewriteChildren()

in codegen/syntax/ClassnameTypeSpecifier.hack [121:153]


  public function rewriteChildren<Tret as ?Node>(
    (function(Node, vec<Node>): Tret) $rewriter,
    vec<Node> $parents = vec[],
  ): this {
    $parents[] = $this;
    $keyword = $rewriter($this->_keyword, $parents);
    $left_angle = $this->_left_angle === null
      ? null
      : $rewriter($this->_left_angle, $parents);
    $type = $this->_type === null ? null : $rewriter($this->_type, $parents);
    $trailing_comma = $this->_trailing_comma === null
      ? null
      : $rewriter($this->_trailing_comma, $parents);
    $right_angle = $this->_right_angle === null
      ? null
      : $rewriter($this->_right_angle, $parents);
    if (
      $keyword === $this->_keyword &&
      $left_angle === $this->_left_angle &&
      $type === $this->_type &&
      $trailing_comma === $this->_trailing_comma &&
      $right_angle === $this->_right_angle
    ) {
      return $this;
    }
    return new static(
      $keyword as ClassnameToken,
      $left_angle as ?LessThanToken,
      $type as ?ITypeSpecifier,
      $trailing_comma as ?Node,
      $right_angle as ?GreaterThanToken,
    );
  }