[
  {
    "type": "any_pragma_token",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "pragma_value",
          "named": true
        }
      ]
    }
  },
  {
    "type": "any_source_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "array_access",
    "named": true,
    "fields": {
      "base": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "index": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "assembly_flags",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assembly_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "assembly_flags",
          "named": true
        },
        {
          "type": "yul_assignment",
          "named": true
        },
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_break",
          "named": true
        },
        {
          "type": "yul_continue",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_for_statement",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_function_definition",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_if_statement",
          "named": true
        },
        {
          "type": "yul_label",
          "named": true
        },
        {
          "type": "yul_leave",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        },
        {
          "type": "yul_switch_statement",
          "named": true
        },
        {
          "type": "yul_variable_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assignment_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "augmented_assignment_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "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": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "block_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "statement",
          "named": true
        },
        {
          "type": "unchecked",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "false",
          "named": true
        },
        {
          "type": "true",
          "named": true
        }
      ]
    }
  },
  {
    "type": "break_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "call_argument",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_struct_argument",
          "named": true
        },
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_struct_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "catch_clause",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "constant_variable_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "constructor_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifier_invocation",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "continue_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "contract_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "constructor_definition",
          "named": true
        },
        {
          "type": "enum_declaration",
          "named": true
        },
        {
          "type": "error_declaration",
          "named": true
        },
        {
          "type": "event_definition",
          "named": true
        },
        {
          "type": "fallback_receive_definition",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "modifier_definition",
          "named": true
        },
        {
          "type": "state_variable_declaration",
          "named": true
        },
        {
          "type": "struct_declaration",
          "named": true
        },
        {
          "type": "user_defined_type_definition",
          "named": true
        },
        {
          "type": "using_directive",
          "named": true
        }
      ]
    }
  },
  {
    "type": "contract_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "contract_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "inheritance_specifier",
          "named": true
        },
        {
          "type": "layout_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "do_while_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "emit_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "enum_value",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "enum_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "error_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "error_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "error_parameter",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "event_definition",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "event_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "event_parameter",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "array_access",
          "named": true
        },
        {
          "type": "assignment_expression",
          "named": true
        },
        {
          "type": "augmented_assignment_expression",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "boolean_literal",
          "named": true
        },
        {
          "type": "call_expression",
          "named": true
        },
        {
          "type": "hex_string_literal",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "inline_array_expression",
          "named": true
        },
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "meta_type_expression",
          "named": true
        },
        {
          "type": "new_expression",
          "named": true
        },
        {
          "type": "number_literal",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "payable_conversion_expression",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "slice_access",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        },
        {
          "type": "struct_expression",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        },
        {
          "type": "tuple_expression",
          "named": true
        },
        {
          "type": "type_cast_expression",
          "named": true
        },
        {
          "type": "unary_expression",
          "named": true
        },
        {
          "type": "unicode_string_literal",
          "named": true
        },
        {
          "type": "update_expression",
          "named": true
        },
        {
          "type": "user_defined_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expression_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "fallback_receive_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifier_invocation",
          "named": true
        },
        {
          "type": "override_specifier",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "state_mutability",
          "named": true
        },
        {
          "type": "virtual",
          "named": true
        },
        {
          "type": "visibility",
          "named": true
        }
      ]
    }
  },
  {
    "type": "false",
    "named": true,
    "fields": {}
  },
  {
    "type": "for_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": ";",
            "named": false
          },
          {
            "type": "expression_statement",
            "named": true
          }
        ]
      },
      "initial": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": ";",
            "named": false
          },
          {
            "type": "expression_statement",
            "named": true
          },
          {
            "type": "variable_declaration_statement",
            "named": true
          }
        ]
      },
      "update": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "return_type_definition",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "modifier_invocation",
          "named": true
        },
        {
          "type": "override_specifier",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "state_mutability",
          "named": true
        },
        {
          "type": "virtual",
          "named": true
        },
        {
          "type": "visibility",
          "named": true
        }
      ]
    }
  },
  {
    "type": "hex_string_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "if_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "else": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "else",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "import_directive",
    "named": true,
    "fields": {
      "alias": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "import_name": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "source": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "inheritance_specifier",
    "named": true,
    "fields": {
      "ancestor": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "user_defined_type",
            "named": true
          }
        ]
      },
      "ancestor_arguments": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "call_argument",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "inline_array_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "interface_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "contract_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "inheritance_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "layout_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "library_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "contract_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "member_expression",
    "named": true,
    "fields": {
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "property": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "meta_type_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "modifier_definition",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "override_specifier",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "virtual",
          "named": true
        }
      ]
    }
  },
  {
    "type": "modifier_invocation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "call_argument",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "new_expression",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "number_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "number_unit",
          "named": true
        }
      ]
    }
  },
  {
    "type": "number_unit",
    "named": true,
    "fields": {}
  },
  {
    "type": "override_specifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "user_defined_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter",
    "named": true,
    "fields": {
      "location": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "calldata",
            "named": false
          },
          {
            "type": "memory",
            "named": false
          },
          {
            "type": "storage",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "payable_conversion_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pragma_directive",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "any_pragma_token",
          "named": true
        },
        {
          "type": "solidity_pragma_token",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pragma_value",
    "named": true,
    "fields": {}
  },
  {
    "type": "primitive_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "return_parameter",
    "named": true,
    "fields": {
      "location": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "calldata",
            "named": false
          },
          {
            "type": "memory",
            "named": false
          },
          {
            "type": "storage",
            "named": false
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "return_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_type_definition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "revert_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "call_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "revert_statement",
    "named": true,
    "fields": {
      "error": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "revert_arguments",
          "named": true
        }
      ]
    }
  },
  {
    "type": "slice_access",
    "named": true,
    "fields": {
      "base": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "from": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "to": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "solidity_pragma_token",
    "named": true,
    "fields": {
      "version_constraint": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "solidity_version",
            "named": true
          },
          {
            "type": "solidity_version_comparison_operator",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "solidity_version_comparison_operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "source_file",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "constant_variable_declaration",
          "named": true
        },
        {
          "type": "contract_declaration",
          "named": true
        },
        {
          "type": "enum_declaration",
          "named": true
        },
        {
          "type": "error_declaration",
          "named": true
        },
        {
          "type": "event_definition",
          "named": true
        },
        {
          "type": "function_definition",
          "named": true
        },
        {
          "type": "import_directive",
          "named": true
        },
        {
          "type": "interface_declaration",
          "named": true
        },
        {
          "type": "library_declaration",
          "named": true
        },
        {
          "type": "pragma_directive",
          "named": true
        },
        {
          "type": "struct_declaration",
          "named": true
        },
        {
          "type": "user_defined_type_definition",
          "named": true
        },
        {
          "type": "using_directive",
          "named": true
        }
      ]
    }
  },
  {
    "type": "state_location",
    "named": true,
    "fields": {}
  },
  {
    "type": "state_mutability",
    "named": true,
    "fields": {}
  },
  {
    "type": "state_variable_declaration",
    "named": true,
    "fields": {
      "location": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "state_location",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "visibility": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "visibility",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "immutable",
          "named": true
        },
        {
          "type": "override_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "assembly_statement",
          "named": true
        },
        {
          "type": "block_statement",
          "named": true
        },
        {
          "type": "break_statement",
          "named": true
        },
        {
          "type": "continue_statement",
          "named": true
        },
        {
          "type": "do_while_statement",
          "named": true
        },
        {
          "type": "emit_statement",
          "named": true
        },
        {
          "type": "expression_statement",
          "named": true
        },
        {
          "type": "for_statement",
          "named": true
        },
        {
          "type": "if_statement",
          "named": true
        },
        {
          "type": "return_statement",
          "named": true
        },
        {
          "type": "revert_statement",
          "named": true
        },
        {
          "type": "try_statement",
          "named": true
        },
        {
          "type": "variable_declaration_statement",
          "named": true
        },
        {
          "type": "while_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {}
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "struct_member",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_declaration",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "struct_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "struct_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "struct_field_assignment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_field_assignment",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "struct_member",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "ternary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "true",
    "named": true,
    "fields": {}
  },
  {
    "type": "try_statement",
    "named": true,
    "fields": {
      "attempt": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block_statement",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "catch_clause",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_alias",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_cast_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "call_argument",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_name",
    "named": true,
    "fields": {
      "key_identifier": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "key_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "primitive_type",
            "named": true
          },
          {
            "type": "user_defined_type",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "parameter",
            "named": true
          }
        ]
      },
      "value_identifier": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "return_parameter",
          "named": true
        },
        {
          "type": "state_mutability",
          "named": true
        },
        {
          "type": "type_name",
          "named": true
        },
        {
          "type": "user_defined_type",
          "named": true
        },
        {
          "type": "visibility",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "delete",
            "named": false
          },
          {
            "type": "~",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "unicode_string_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "update_expression",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "++",
            "named": false
          },
          {
            "type": "--",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "user_definable_operator",
    "named": true,
    "fields": {}
  },
  {
    "type": "user_defined_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "user_defined_type_definition",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "primitive_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "using_alias",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "user_definable_operator",
          "named": true
        },
        {
          "type": "user_defined_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "using_directive",
    "named": true,
    "fields": {
      "source": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "any_source_type",
            "named": true
          },
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_alias",
          "named": true
        },
        {
          "type": "using_alias",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable_declaration",
    "named": true,
    "fields": {
      "location": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "calldata",
            "named": false
          },
          {
            "type": "memory",
            "named": false
          },
          {
            "type": "storage",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "variable_declaration_statement",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "variable_declaration",
          "named": true
        },
        {
          "type": "variable_declaration_tuple",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable_declaration_tuple",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "variable_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "visibility",
    "named": true,
    "fields": {}
  },
  {
    "type": "while_statement",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "statement",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "yul_assignment",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_path",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "yul_assignment",
          "named": true
        },
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_break",
          "named": true
        },
        {
          "type": "yul_continue",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_for_statement",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_function_definition",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_if_statement",
          "named": true
        },
        {
          "type": "yul_label",
          "named": true
        },
        {
          "type": "yul_leave",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        },
        {
          "type": "yul_switch_statement",
          "named": true
        },
        {
          "type": "yul_variable_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_boolean",
    "named": true,
    "fields": {}
  },
  {
    "type": "yul_break",
    "named": true,
    "fields": {}
  },
  {
    "type": "yul_continue",
    "named": true,
    "fields": {}
  },
  {
    "type": "yul_evm_builtin",
    "named": true,
    "fields": {}
  },
  {
    "type": "yul_for_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_path",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_function_call",
    "named": true,
    "fields": {
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "yul_evm_builtin",
            "named": true
          },
          {
            "type": "yul_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_path",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_function_definition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_hex_string_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "yul_identifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_if_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_path",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_label",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_path",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_switch_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "yul_block",
          "named": true
        },
        {
          "type": "yul_boolean",
          "named": true
        },
        {
          "type": "yul_decimal_number",
          "named": true
        },
        {
          "type": "yul_function_call",
          "named": true
        },
        {
          "type": "yul_hex_number",
          "named": true
        },
        {
          "type": "yul_hex_string_literal",
          "named": true
        },
        {
          "type": "yul_path",
          "named": true
        },
        {
          "type": "yul_string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "yul_variable_declaration",
    "named": true,
    "fields": {
      "left": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "yul_identifier",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "yul_boolean",
            "named": true
          },
          {
            "type": "yul_decimal_number",
            "named": true
          },
          {
            "type": "yul_function_call",
            "named": true
          },
          {
            "type": "yul_hex_number",
            "named": true
          },
          {
            "type": "yul_hex_string_literal",
            "named": true
          },
          {
            "type": "yul_path",
            "named": true
          },
          {
            "type": "yul_string_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "\"evmasm\"",
    "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": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^=",
    "named": false
  },
  {
    "type": "_",
    "named": false
  },
  {
    "type": "abstract",
    "named": false
  },
  {
    "type": "add",
    "named": false
  },
  {
    "type": "addmod",
    "named": false
  },
  {
    "type": "address",
    "named": false
  },
  {
    "type": "and",
    "named": false
  },
  {
    "type": "anonymous",
    "named": false
  },
  {
    "type": "as",
    "named": false
  },
  {
    "type": "assembly",
    "named": false
  },
  {
    "type": "at",
    "named": false
  },
  {
    "type": "balance",
    "named": false
  },
  {
    "type": "basefee",
    "named": false
  },
  {
    "type": "blobbasefee",
    "named": false
  },
  {
    "type": "blobfee",
    "named": false
  },
  {
    "type": "blobhash",
    "named": false
  },
  {
    "type": "blockhash",
    "named": false
  },
  {
    "type": "bool",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "byte",
    "named": false
  },
  {
    "type": "bytes",
    "named": false
  },
  {
    "type": "bytes1",
    "named": false
  },
  {
    "type": "bytes10",
    "named": false
  },
  {
    "type": "bytes11",
    "named": false
  },
  {
    "type": "bytes12",
    "named": false
  },
  {
    "type": "bytes13",
    "named": false
  },
  {
    "type": "bytes14",
    "named": false
  },
  {
    "type": "bytes15",
    "named": false
  },
  {
    "type": "bytes16",
    "named": false
  },
  {
    "type": "bytes17",
    "named": false
  },
  {
    "type": "bytes18",
    "named": false
  },
  {
    "type": "bytes19",
    "named": false
  },
  {
    "type": "bytes2",
    "named": false
  },
  {
    "type": "bytes20",
    "named": false
  },
  {
    "type": "bytes21",
    "named": false
  },
  {
    "type": "bytes22",
    "named": false
  },
  {
    "type": "bytes23",
    "named": false
  },
  {
    "type": "bytes24",
    "named": false
  },
  {
    "type": "bytes25",
    "named": false
  },
  {
    "type": "bytes26",
    "named": false
  },
  {
    "type": "bytes27",
    "named": false
  },
  {
    "type": "bytes28",
    "named": false
  },
  {
    "type": "bytes29",
    "named": false
  },
  {
    "type": "bytes3",
    "named": false
  },
  {
    "type": "bytes30",
    "named": false
  },
  {
    "type": "bytes31",
    "named": false
  },
  {
    "type": "bytes32",
    "named": false
  },
  {
    "type": "bytes4",
    "named": false
  },
  {
    "type": "bytes5",
    "named": false
  },
  {
    "type": "bytes6",
    "named": false
  },
  {
    "type": "bytes7",
    "named": false
  },
  {
    "type": "bytes8",
    "named": false
  },
  {
    "type": "bytes9",
    "named": false
  },
  {
    "type": "call",
    "named": false
  },
  {
    "type": "callcode",
    "named": false
  },
  {
    "type": "calldata",
    "named": false
  },
  {
    "type": "calldatacopy",
    "named": false
  },
  {
    "type": "calldataload",
    "named": false
  },
  {
    "type": "calldatasize",
    "named": false
  },
  {
    "type": "caller",
    "named": false
  },
  {
    "type": "callvalue",
    "named": false
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "catch",
    "named": false
  },
  {
    "type": "chainid",
    "named": false
  },
  {
    "type": "coinbase",
    "named": false
  },
  {
    "type": "comment",
    "named": true,
    "extra": true
  },
  {
    "type": "constant",
    "named": false
  },
  {
    "type": "constructor",
    "named": false
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "contract",
    "named": false
  },
  {
    "type": "create",
    "named": false
  },
  {
    "type": "create2",
    "named": false
  },
  {
    "type": "days",
    "named": false
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "delegatecall",
    "named": false
  },
  {
    "type": "delete",
    "named": false
  },
  {
    "type": "difficulty",
    "named": false
  },
  {
    "type": "div",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "emit",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "enum_value",
    "named": true
  },
  {
    "type": "eq",
    "named": false
  },
  {
    "type": "error",
    "named": false
  },
  {
    "type": "ether",
    "named": false
  },
  {
    "type": "event",
    "named": false
  },
  {
    "type": "exp",
    "named": false
  },
  {
    "type": "extcodecopy",
    "named": false
  },
  {
    "type": "extcodehash",
    "named": false
  },
  {
    "type": "extcodesize",
    "named": false
  },
  {
    "type": "external",
    "named": false
  },
  {
    "type": "fallback",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "finney",
    "named": false
  },
  {
    "type": "fixed",
    "named": false
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "from",
    "named": false
  },
  {
    "type": "function",
    "named": false
  },
  {
    "type": "gas",
    "named": false
  },
  {
    "type": "gaslimit",
    "named": false
  },
  {
    "type": "gasprice",
    "named": false
  },
  {
    "type": "global",
    "named": false
  },
  {
    "type": "gt",
    "named": false
  },
  {
    "type": "gwei",
    "named": false
  },
  {
    "type": "hex",
    "named": false
  },
  {
    "type": "hours",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "immutable",
    "named": true
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "indexed",
    "named": false
  },
  {
    "type": "int",
    "named": false
  },
  {
    "type": "int104",
    "named": false
  },
  {
    "type": "int112",
    "named": false
  },
  {
    "type": "int120",
    "named": false
  },
  {
    "type": "int128",
    "named": false
  },
  {
    "type": "int136",
    "named": false
  },
  {
    "type": "int144",
    "named": false
  },
  {
    "type": "int152",
    "named": false
  },
  {
    "type": "int16",
    "named": false
  },
  {
    "type": "int160",
    "named": false
  },
  {
    "type": "int168",
    "named": false
  },
  {
    "type": "int176",
    "named": false
  },
  {
    "type": "int184",
    "named": false
  },
  {
    "type": "int192",
    "named": false
  },
  {
    "type": "int200",
    "named": false
  },
  {
    "type": "int208",
    "named": false
  },
  {
    "type": "int216",
    "named": false
  },
  {
    "type": "int224",
    "named": false
  },
  {
    "type": "int232",
    "named": false
  },
  {
    "type": "int24",
    "named": false
  },
  {
    "type": "int240",
    "named": false
  },
  {
    "type": "int248",
    "named": false
  },
  {
    "type": "int256",
    "named": false
  },
  {
    "type": "int32",
    "named": false
  },
  {
    "type": "int40",
    "named": false
  },
  {
    "type": "int48",
    "named": false
  },
  {
    "type": "int56",
    "named": false
  },
  {
    "type": "int64",
    "named": false
  },
  {
    "type": "int72",
    "named": false
  },
  {
    "type": "int8",
    "named": false
  },
  {
    "type": "int80",
    "named": false
  },
  {
    "type": "int88",
    "named": false
  },
  {
    "type": "int96",
    "named": false
  },
  {
    "type": "interface",
    "named": false
  },
  {
    "type": "internal",
    "named": false
  },
  {
    "type": "invalid",
    "named": false
  },
  {
    "type": "is",
    "named": false
  },
  {
    "type": "iszero",
    "named": false
  },
  {
    "type": "keccak256",
    "named": false
  },
  {
    "type": "layout",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "library",
    "named": false
  },
  {
    "type": "log0",
    "named": false
  },
  {
    "type": "log1",
    "named": false
  },
  {
    "type": "log2",
    "named": false
  },
  {
    "type": "log3",
    "named": false
  },
  {
    "type": "log4",
    "named": false
  },
  {
    "type": "lt",
    "named": false
  },
  {
    "type": "mapping",
    "named": false
  },
  {
    "type": "mcopy",
    "named": false
  },
  {
    "type": "memory",
    "named": false
  },
  {
    "type": "minutes",
    "named": false
  },
  {
    "type": "mload",
    "named": false
  },
  {
    "type": "mod",
    "named": false
  },
  {
    "type": "modifier",
    "named": false
  },
  {
    "type": "msize",
    "named": false
  },
  {
    "type": "mstore",
    "named": false
  },
  {
    "type": "mstore8",
    "named": false
  },
  {
    "type": "mul",
    "named": false
  },
  {
    "type": "mulmod",
    "named": false
  },
  {
    "type": "new",
    "named": false
  },
  {
    "type": "not",
    "named": false
  },
  {
    "type": "number",
    "named": false
  },
  {
    "type": "or",
    "named": false
  },
  {
    "type": "origin",
    "named": false
  },
  {
    "type": "override",
    "named": false
  },
  {
    "type": "payable",
    "named": false
  },
  {
    "type": "pop",
    "named": false
  },
  {
    "type": "pragma",
    "named": false
  },
  {
    "type": "prevrandao",
    "named": false
  },
  {
    "type": "private",
    "named": false
  },
  {
    "type": "public",
    "named": false
  },
  {
    "type": "pure",
    "named": false
  },
  {
    "type": "receive",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "returndatacopy",
    "named": false
  },
  {
    "type": "returndatasize",
    "named": false
  },
  {
    "type": "returns",
    "named": false
  },
  {
    "type": "revert",
    "named": false
  },
  {
    "type": "sar",
    "named": false
  },
  {
    "type": "sdiv",
    "named": false
  },
  {
    "type": "seconds",
    "named": false
  },
  {
    "type": "selfbalance",
    "named": false
  },
  {
    "type": "selfdestruct",
    "named": false
  },
  {
    "type": "sgt",
    "named": false
  },
  {
    "type": "shl",
    "named": false
  },
  {
    "type": "shr",
    "named": false
  },
  {
    "type": "signextend",
    "named": false
  },
  {
    "type": "sload",
    "named": false
  },
  {
    "type": "slt",
    "named": false
  },
  {
    "type": "smod",
    "named": false
  },
  {
    "type": "solidity",
    "named": false
  },
  {
    "type": "solidity_version",
    "named": true
  },
  {
    "type": "sstore",
    "named": false
  },
  {
    "type": "staticcall",
    "named": false
  },
  {
    "type": "stop",
    "named": false
  },
  {
    "type": "storage",
    "named": false
  },
  {
    "type": "string",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "sub",
    "named": false
  },
  {
    "type": "switch",
    "named": false
  },
  {
    "type": "szabo",
    "named": false
  },
  {
    "type": "timestamp",
    "named": false
  },
  {
    "type": "tload",
    "named": false
  },
  {
    "type": "transient",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "try",
    "named": false
  },
  {
    "type": "tstore",
    "named": false
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "ufixed",
    "named": false
  },
  {
    "type": "uint",
    "named": false
  },
  {
    "type": "uint104",
    "named": false
  },
  {
    "type": "uint112",
    "named": false
  },
  {
    "type": "uint120",
    "named": false
  },
  {
    "type": "uint128",
    "named": false
  },
  {
    "type": "uint136",
    "named": false
  },
  {
    "type": "uint144",
    "named": false
  },
  {
    "type": "uint152",
    "named": false
  },
  {
    "type": "uint16",
    "named": false
  },
  {
    "type": "uint160",
    "named": false
  },
  {
    "type": "uint168",
    "named": false
  },
  {
    "type": "uint176",
    "named": false
  },
  {
    "type": "uint184",
    "named": false
  },
  {
    "type": "uint192",
    "named": false
  },
  {
    "type": "uint200",
    "named": false
  },
  {
    "type": "uint208",
    "named": false
  },
  {
    "type": "uint216",
    "named": false
  },
  {
    "type": "uint224",
    "named": false
  },
  {
    "type": "uint232",
    "named": false
  },
  {
    "type": "uint24",
    "named": false
  },
  {
    "type": "uint240",
    "named": false
  },
  {
    "type": "uint248",
    "named": false
  },
  {
    "type": "uint256",
    "named": false
  },
  {
    "type": "uint32",
    "named": false
  },
  {
    "type": "uint40",
    "named": false
  },
  {
    "type": "uint48",
    "named": false
  },
  {
    "type": "uint56",
    "named": false
  },
  {
    "type": "uint64",
    "named": false
  },
  {
    "type": "uint72",
    "named": false
  },
  {
    "type": "uint8",
    "named": false
  },
  {
    "type": "uint80",
    "named": false
  },
  {
    "type": "uint88",
    "named": false
  },
  {
    "type": "uint96",
    "named": false
  },
  {
    "type": "unchecked",
    "named": true
  },
  {
    "type": "unicode",
    "named": false
  },
  {
    "type": "using",
    "named": false
  },
  {
    "type": "var",
    "named": false
  },
  {
    "type": "view",
    "named": false
  },
  {
    "type": "virtual",
    "named": true
  },
  {
    "type": "weeks",
    "named": false
  },
  {
    "type": "wei",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "xor",
    "named": false
  },
  {
    "type": "years",
    "named": false
  },
  {
    "type": "yul_decimal_number",
    "named": true
  },
  {
    "type": "yul_hex_number",
    "named": true
  },
  {
    "type": "yul_leave",
    "named": true
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]