[
  {
    "type": "_expression",
    "named": true,
    "subtypes": [
      {
        "type": "_primary_expression",
        "named": true
      },
      {
        "type": "binary_expression",
        "named": true
      },
      {
        "type": "concatenation",
        "named": true
      },
      {
        "type": "parenthesized_expression",
        "named": true
      },
      {
        "type": "postfix_expression",
        "named": true
      },
      {
        "type": "ternary_expression",
        "named": true
      },
      {
        "type": "unary_expression",
        "named": true
      },
      {
        "type": "word",
        "named": true
      }
    ]
  },
  {
    "type": "_primary_expression",
    "named": true,
    "subtypes": [
      {
        "type": "ansi_c_string",
        "named": true
      },
      {
        "type": "arithmetic_expansion",
        "named": true
      },
      {
        "type": "brace_expression",
        "named": true
      },
      {
        "type": "command_substitution",
        "named": true
      },
      {
        "type": "expansion",
        "named": true
      },
      {
        "type": "number",
        "named": true
      },
      {
        "type": "process_substitution",
        "named": true
      },
      {
        "type": "raw_string",
        "named": true
      },
      {
        "type": "simple_expansion",
        "named": true
      },
      {
        "type": "string",
        "named": true
      },
      {
        "type": "translated_string",
        "named": true
      },
      {
        "type": "word",
        "named": true
      }
    ]
  },
  {
    "type": "_statement",
    "named": true,
    "subtypes": [
      {
        "type": "c_style_for_statement",
        "named": true
      },
      {
        "type": "case_statement",
        "named": true
      },
      {
        "type": "command",
        "named": true
      },
      {
        "type": "compound_statement",
        "named": true
      },
      {
        "type": "declaration_command",
        "named": true
      },
      {
        "type": "for_statement",
        "named": true
      },
      {
        "type": "function_definition",
        "named": true
      },
      {
        "type": "if_statement",
        "named": true
      },
      {
        "type": "list",
        "named": true
      },
      {
        "type": "negated_command",
        "named": true
      },
      {
        "type": "pipeline",
        "named": true
      },
      {
        "type": "redirected_statement",
        "named": true
      },
      {
        "type": "subshell",
        "named": true
      },
      {
        "type": "test_command",
        "named": true
      },
      {
        "type": "unset_command",
        "named": true
      },
      {
        "type": "variable_assignment",
        "named": true
      },
      {
        "type": "variable_assignments",
        "named": true
      },
      {
        "type": "while_statement",
        "named": true
      }
    ]
  },
  {
    "type": "arithmetic_expansion",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "raw_string",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "unary_expression",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "raw_string",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "&&",
            "named": false
          },
          {
            "type": "&=",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "**",
            "named": false
          },
          {
            "type": "**=",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "-a",
            "named": false
          },
          {
            "type": "-o",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<<=",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "=~",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": ">>=",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "^=",
            "named": false
          },
          {
            "type": "test_operator",
            "named": true
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "|=",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "extglob_pattern",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "raw_string",
            "named": true
          },
          {
            "type": "regex",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "brace_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "number",
          "named": true
        }
      ]
    }
  },
  {
    "type": "c_style_for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          },
          {
            "type": "do_group",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          },
          {
            "type": "variable_assignment",
            "named": true
          },
          {
            "type": "word",
            "named": true
          }
        ]
      },
      "initializer": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          },
          {
            "type": "variable_assignment",
            "named": true
          },
          {
            "type": "word",
            "named": true
          }
        ]
      },
      "update": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          },
          {
            "type": "variable_assignment",
            "named": true
          },
          {
            "type": "word",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "case_item",
    "named": true,
    "fields": {
      "fallthrough": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": ";&",
            "named": false
          },
          {
            "type": ";;&",
            "named": false
          }
        ]
      },
      "termination": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": ";;",
            "named": false
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          },
          {
            "type": "extglob_pattern",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_statement",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "case_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "command",
    "named": true,
    "fields": {
      "argument": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "$",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": "=~",
            "named": false
          },
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          },
          {
            "type": "regex",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "command_name",
            "named": true
          }
        ]
      },
      "redirect": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "file_redirect",
            "named": true
          },
          {
            "type": "herestring_redirect",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "subshell",
          "named": true
        },
        {
          "type": "variable_assignment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "command_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "command_substitution",
    "named": true,
    "fields": {
      "redirect": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "file_redirect",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "compound_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "postfix_expression",
          "named": true
        },
        {
          "type": "raw_string",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "unary_expression",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "concatenation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "array",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "declaration_command",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        },
        {
          "type": "variable_assignment",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "do_group",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "elif_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "else_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expansion",
    "named": true,
    "fields": {
      "operator": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "#",
            "named": false
          },
          {
            "type": "##",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "%%",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": ",,",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "/#",
            "named": false
          },
          {
            "type": "/%",
            "named": false
          },
          {
            "type": "//",
            "named": false
          },
          {
            "type": ":",
            "named": false
          },
          {
            "type": ":+",
            "named": false
          },
          {
            "type": ":-",
            "named": false
          },
          {
            "type": ":=",
            "named": false
          },
          {
            "type": ":?",
            "named": false
          },
          {
            "type": "=",
            "named": false
          },
          {
            "type": "?",
            "named": false
          },
          {
            "type": "@",
            "named": false
          },
          {
            "type": "A",
            "named": false
          },
          {
            "type": "E",
            "named": false
          },
          {
            "type": "K",
            "named": false
          },
          {
            "type": "L",
            "named": false
          },
          {
            "type": "P",
            "named": false
          },
          {
            "type": "Q",
            "named": false
          },
          {
            "type": "U",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "^^",
            "named": false
          },
          {
            "type": "a",
            "named": false
          },
          {
            "type": "k",
            "named": false
          },
          {
            "type": "u",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "array",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "regex",
          "named": true
        },
        {
          "type": "special_variable_name",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "file_redirect",
    "named": true,
    "fields": {
      "descriptor": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "file_descriptor",
            "named": true
          }
        ]
      },
      "destination": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "do_group",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          }
        ]
      },
      "variable": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "variable_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "compound_statement",
            "named": true
          },
          {
            "type": "if_statement",
            "named": true
          },
          {
            "type": "subshell",
            "named": true
          },
          {
            "type": "test_command",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "word",
            "named": true
          }
        ]
      },
      "redirect": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "file_redirect",
            "named": true
          },
          {
            "type": "herestring_redirect",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "heredoc_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "heredoc_content",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        }
      ]
    }
  },
  {
    "type": "heredoc_redirect",
    "named": true,
    "fields": {
      "argument": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          }
        ]
      },
      "descriptor": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "file_descriptor",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "&&",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "redirect": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "file_redirect",
            "named": true
          },
          {
            "type": "herestring_redirect",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "heredoc_body",
          "named": true
        },
        {
          "type": "heredoc_end",
          "named": true
        },
        {
          "type": "heredoc_start",
          "named": true
        },
        {
          "type": "pipeline",
          "named": true
        }
      ]
    }
  },
  {
    "type": "herestring_redirect",
    "named": true,
    "fields": {
      "descriptor": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "file_descriptor",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_statement",
    "named": true,
    "fields": {
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "&",
            "named": false
          },
          {
            "type": ";",
            "named": false
          },
          {
            "type": ";;",
            "named": false
          },
          {
            "type": "_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        },
        {
          "type": "elif_clause",
          "named": true
        },
        {
          "type": "else_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "negated_command",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "command",
          "named": true
        },
        {
          "type": "subshell",
          "named": true
        },
        {
          "type": "test_command",
          "named": true
        },
        {
          "type": "variable_assignment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "number",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "raw_string",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "variable_assignment",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pipeline",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "postfix_expression",
    "named": true,
    "fields": {
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "++",
            "named": false
          },
          {
            "type": "--",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "raw_string",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "process_substitution",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "program",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "redirected_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_statement",
            "named": true
          }
        ]
      },
      "redirect": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "file_redirect",
            "named": true
          },
          {
            "type": "heredoc_redirect",
            "named": true
          },
          {
            "type": "herestring_redirect",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "herestring_redirect",
          "named": true
        }
      ]
    }
  },
  {
    "type": "simple_expansion",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "special_variable_name",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "arithmetic_expansion",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "subscript",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "compound_statement",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          },
          {
            "type": "subshell",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "variable_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "subshell",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ternary_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "raw_string",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "raw_string",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          },
          {
            "type": "command_substitution",
            "named": true
          },
          {
            "type": "expansion",
            "named": true
          },
          {
            "type": "number",
            "named": true
          },
          {
            "type": "raw_string",
            "named": true
          },
          {
            "type": "simple_expansion",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "test_command",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "redirected_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "translated_string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "++",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "--",
            "named": false
          },
          {
            "type": "test_operator",
            "named": true
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "command_substitution",
          "named": true
        },
        {
          "type": "expansion",
          "named": true
        },
        {
          "type": "number",
          "named": true
        },
        {
          "type": "raw_string",
          "named": true
        },
        {
          "type": "simple_expansion",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "subscript",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unset_command",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_primary_expression",
          "named": true
        },
        {
          "type": "concatenation",
          "named": true
        },
        {
          "type": "variable_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable_assignment",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "subscript",
            "named": true
          },
          {
            "type": "variable_name",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_primary_expression",
            "named": true
          },
          {
            "type": "array",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "concatenation",
            "named": true
          },
          {
            "type": "parenthesized_expression",
            "named": true
          },
          {
            "type": "postfix_expression",
            "named": true
          },
          {
            "type": "unary_expression",
            "named": true
          },
          {
            "type": "variable_assignment",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "variable_assignments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "variable_assignment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "while_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "do_group",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "&",
            "named": false
          },
          {
            "type": ";",
            "named": false
          },
          {
            "type": ";;",
            "named": false
          },
          {
            "type": "_statement",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "word",
    "named": true,
    "fields": {}
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "#",
    "named": false
  },
  {
    "type": "##",
    "named": false
  },
  {
    "type": "$",
    "named": false
  },
  {
    "type": "$(",
    "named": false
  },
  {
    "type": "$((",
    "named": false
  },
  {
    "type": "$[",
    "named": false
  },
  {
    "type": "$`",
    "named": false
  },
  {
    "type": "${",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "%%",
    "named": false
  },
  {
    "type": "%=",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "&=",
    "named": false
  },
  {
    "type": "&>",
    "named": false
  },
  {
    "type": "&>>",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": "((",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "))",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "**",
    "named": false
  },
  {
    "type": "**=",
    "named": false
  },
  {
    "type": "*=",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": "++",
    "named": false
  },
  {
    "type": "+=",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": ",,",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": "--",
    "named": false
  },
  {
    "type": "-=",
    "named": false
  },
  {
    "type": "-a",
    "named": false
  },
  {
    "type": "-o",
    "named": false
  },
  {
    "type": "..",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": "/#",
    "named": false
  },
  {
    "type": "/%",
    "named": false
  },
  {
    "type": "//",
    "named": false
  },
  {
    "type": "/=",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ":+",
    "named": false
  },
  {
    "type": ":-",
    "named": false
  },
  {
    "type": ":=",
    "named": false
  },
  {
    "type": ":?",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": ";&",
    "named": false
  },
  {
    "type": ";;",
    "named": false
  },
  {
    "type": ";;&",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<&",
    "named": false
  },
  {
    "type": "<&-",
    "named": false
  },
  {
    "type": "<(",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<<-",
    "named": false
  },
  {
    "type": "<<<",
    "named": false
  },
  {
    "type": "<<=",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=~",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">&",
    "named": false
  },
  {
    "type": ">&-",
    "named": false
  },
  {
    "type": ">(",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": ">>=",
    "named": false
  },
  {
    "type": ">|",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "A",
    "named": false
  },
  {
    "type": "E",
    "named": false
  },
  {
    "type": "K",
    "named": false
  },
  {
    "type": "L",
    "named": false
  },
  {
    "type": "P",
    "named": false
  },
  {
    "type": "Q",
    "named": false
  },
  {
    "type": "U",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "[[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "]]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^=",
    "named": false
  },
  {
    "type": "^^",
    "named": false
  },
  {
    "type": "`",
    "named": false
  },
  {
    "type": "``",
    "named": false
  },
  {
    "type": "a",
    "named": false
  },
  {
    "type": "ansi_c_string",
    "named": true
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "comment",
    "named": true,
    "extra": true
  },
  {
    "type": "declare",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "done",
    "named": false
  },
  {
    "type": "elif",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "esac",
    "named": false
  },
  {
    "type": "export",
    "named": false
  },
  {
    "type": "extglob_pattern",
    "named": true
  },
  {
    "type": "fi",
    "named": false
  },
  {
    "type": "file_descriptor",
    "named": true
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "heredoc_content",
    "named": true
  },
  {
    "type": "heredoc_end",
    "named": true
  },
  {
    "type": "heredoc_start",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "k",
    "named": false
  },
  {
    "type": "local",
    "named": false
  },
  {
    "type": "raw_string",
    "named": true
  },
  {
    "type": "readonly",
    "named": false
  },
  {
    "type": "regex",
    "named": true
  },
  {
    "type": "select",
    "named": false
  },
  {
    "type": "special_variable_name",
    "named": true
  },
  {
    "type": "string_content",
    "named": true
  },
  {
    "type": "test_operator",
    "named": true
  },
  {
    "type": "then",
    "named": false
  },
  {
    "type": "typeset",
    "named": false
  },
  {
    "type": "u",
    "named": false
  },
  {
    "type": "unset",
    "named": false
  },
  {
    "type": "unsetenv",
    "named": false
  },
  {
    "type": "until",
    "named": false
  },
  {
    "type": "variable_name",
    "named": true
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|&",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]