[
  {
    "type": "anonymous_function",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "argument",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "hole",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "argument",
          "named": true
        },
        {
          "type": "attribute_value",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assert",
    "named": true,
    "fields": {
      "message": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "attribute",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "arguments",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "attribute_value",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          },
          {
            "type": "{",
            "named": false
          },
          {
            "type": "}",
            "named": false
          }
        ]
      },
      "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
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">=.",
            "named": false
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "|>",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "pipeline_echo",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          },
          {
            "type": "{",
            "named": false
          },
          {
            "type": "}",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "bit_string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "bit_string_segment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bit_string_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "bit_string_segment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bit_string_segment",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "options": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ":",
            "named": false
          },
          {
            "type": "bit_string_segment_options",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "as",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bit_string_segment_option",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bit_string_segment_options",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "bit_string_segment_option",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "assert",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "let",
          "named": true
        },
        {
          "type": "let_assert",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        },
        {
          "type": "use",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_negation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case",
    "named": true,
    "fields": {
      "clauses": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "case_clauses",
            "named": true
          }
        ]
      },
      "subjects": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "case_subjects",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "case_clause",
    "named": true,
    "fields": {
      "guard": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "case_clause_guard",
            "named": true
          }
        ]
      },
      "patterns": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "case_clause_patterns",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "case_clause_guard",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_clause_pattern",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string_pattern",
          "named": true
        },
        {
          "type": "discard",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list_pattern",
          "named": true
        },
        {
          "type": "record_pattern",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_clause_patterns",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "case_clause_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_clauses",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "case_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_subjects",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "comment",
    "named": true,
    "fields": {}
  },
  {
    "type": "constant",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "constructor_name",
    "named": true,
    "fields": {}
  },
  {
    "type": "data_constructor",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "data_constructor_arguments",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        }
      ]
    }
  },
  {
    "type": "data_constructor_argument",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "data_constructor_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "data_constructor_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "data_constructors",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "data_constructor",
          "named": true
        }
      ]
    }
  },
  {
    "type": "discard",
    "named": true,
    "fields": {}
  },
  {
    "type": "echo",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "escape_sequence",
    "named": true,
    "fields": {}
  },
  {
    "type": "external_function",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "external_function_body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "external_function_body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "external_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type_name",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_access",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "record": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_call",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "arguments",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_parameter",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "function_parameter_types",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_hole",
          "named": true
        },
        {
          "type": "type_var",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {
      "parameter_types": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_parameter_types",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "hole",
    "named": true,
    "fields": {}
  },
  {
    "type": "identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "import",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "imports": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "unqualified_imports",
            "named": true
          }
        ]
      },
      "module": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "module",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "integer",
    "named": true,
    "fields": {}
  },
  {
    "type": "integer_negation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "label",
    "named": true,
    "fields": {}
  },
  {
    "type": "let",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "let_assert",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "message": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "list",
    "named": true,
    "fields": {
      "spread": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "list_pattern",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string_pattern",
          "named": true
        },
        {
          "type": "discard",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list_pattern",
          "named": true
        },
        {
          "type": "list_pattern_tail",
          "named": true
        },
        {
          "type": "record_pattern",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "list_pattern_tail",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "discard",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "module",
    "named": true,
    "fields": {}
  },
  {
    "type": "module_comment",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "doc_comment_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "panic",
    "named": true,
    "fields": {
      "message": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "pattern_spread",
    "named": true,
    "fields": {}
  },
  {
    "type": "pipeline_echo",
    "named": true,
    "fields": {}
  },
  {
    "type": "record",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "arguments",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          },
          {
            "type": "remote_constructor_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "record_pattern",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "record_pattern_arguments",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          },
          {
            "type": "remote_constructor_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "record_pattern_argument",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "label": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string_pattern",
            "named": true
          },
          {
            "type": "discard",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "list_pattern",
            "named": true
          },
          {
            "type": "record_pattern",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "tuple_pattern",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "record_pattern_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "pattern_spread",
          "named": true
        },
        {
          "type": "record_pattern_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "record_update",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "record_update_arguments",
            "named": true
          }
        ]
      },
      "constructor": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          },
          {
            "type": "remote_constructor_name",
            "named": true
          }
        ]
      },
      "spread": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "record_update_argument",
    "named": true,
    "fields": {
      "label": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "label",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "record_update_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "record_update_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "remote_constructor_name",
    "named": true,
    "fields": {
      "module": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "remote_type_identifier",
    "named": true,
    "fields": {
      "module": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "source_file",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "assert",
          "named": true
        },
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "external_function",
          "named": true
        },
        {
          "type": "external_type",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "import",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "let",
          "named": true
        },
        {
          "type": "let_assert",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "target_group",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        },
        {
          "type": "type_alias",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        },
        {
          "type": "use",
          "named": true
        }
      ]
    }
  },
  {
    "type": "statement_comment",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "doc_comment_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "quoted_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "target",
    "named": true,
    "fields": {}
  },
  {
    "type": "target_group",
    "named": true,
    "fields": {
      "target": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "target",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "constant",
          "named": true
        },
        {
          "type": "external_function",
          "named": true
        },
        {
          "type": "external_type",
          "named": true
        },
        {
          "type": "function",
          "named": true
        },
        {
          "type": "import",
          "named": true
        },
        {
          "type": "type_alias",
          "named": true
        },
        {
          "type": "type_definition",
          "named": true
        }
      ]
    }
  },
  {
    "type": "todo",
    "named": true,
    "fields": {
      "message": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "anonymous_function",
          "named": true
        },
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "boolean_negation",
          "named": true
        },
        {
          "type": "case",
          "named": true
        },
        {
          "type": "echo",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "function_call",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "integer_negation",
          "named": true
        },
        {
          "type": "list",
          "named": true
        },
        {
          "type": "panic",
          "named": true
        },
        {
          "type": "record",
          "named": true
        },
        {
          "type": "record_update",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "tuple",
          "named": true
        },
        {
          "type": "tuple_access",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_access",
    "named": true,
    "fields": {
      "index": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "integer",
            "named": true
          }
        ]
      },
      "tuple": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_pattern",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string_pattern",
          "named": true
        },
        {
          "type": "discard",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list_pattern",
          "named": true
        },
        {
          "type": "record_pattern",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_hole",
          "named": true
        },
        {
          "type": "type_var",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_arguments",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "remote_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_alias",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "opacity_modifier",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_hole",
          "named": true
        },
        {
          "type": "type_name",
          "named": true
        },
        {
          "type": "type_var",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_argument",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "function_type",
          "named": true
        },
        {
          "type": "tuple_type",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_hole",
          "named": true
        },
        {
          "type": "type_var",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_definition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "data_constructors",
          "named": true
        },
        {
          "type": "opacity_modifier",
          "named": true
        },
        {
          "type": "type_name",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_hole",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_name",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "remote_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_parameter",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "type_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_var",
    "named": true,
    "fields": {}
  },
  {
    "type": "unqualified_import",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constructor_name",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "unqualified_imports",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "unqualified_import",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use",
    "named": true,
    "fields": {
      "assignments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "use_assignments",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "anonymous_function",
            "named": true
          },
          {
            "type": "binary_expression",
            "named": true
          },
          {
            "type": "bit_string",
            "named": true
          },
          {
            "type": "block",
            "named": true
          },
          {
            "type": "boolean_negation",
            "named": true
          },
          {
            "type": "case",
            "named": true
          },
          {
            "type": "echo",
            "named": true
          },
          {
            "type": "field_access",
            "named": true
          },
          {
            "type": "float",
            "named": true
          },
          {
            "type": "function_call",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "integer",
            "named": true
          },
          {
            "type": "integer_negation",
            "named": true
          },
          {
            "type": "list",
            "named": true
          },
          {
            "type": "panic",
            "named": true
          },
          {
            "type": "record",
            "named": true
          },
          {
            "type": "record_update",
            "named": true
          },
          {
            "type": "string",
            "named": true
          },
          {
            "type": "todo",
            "named": true
          },
          {
            "type": "tuple",
            "named": true
          },
          {
            "type": "tuple_access",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "use_assignment",
    "named": true,
    "fields": {
      "assign": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "as",
            "named": false
          },
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "type_hole",
            "named": true
          },
          {
            "type": "type_var",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "binary_expression",
          "named": true
        },
        {
          "type": "bit_string_pattern",
          "named": true
        },
        {
          "type": "discard",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list_pattern",
          "named": true
        },
        {
          "type": "record_pattern",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "tuple_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use_assignments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "use_assignment",
          "named": true
        }
      ]
    }
  },
  {
    "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": "as",
    "named": false
  },
  {
    "type": "assert",
    "named": false
  },
  {
    "type": "big",
    "named": false
  },
  {
    "type": "binary",
    "named": false
  },
  {
    "type": "bit_string",
    "named": false
  },
  {
    "type": "bits",
    "named": false
  },
  {
    "type": "bytes",
    "named": false
  },
  {
    "type": "case",
    "named": false
  },
  {
    "type": "const",
    "named": false
  },
  {
    "type": "doc_comment_content",
    "named": true
  },
  {
    "type": "echo",
    "named": false
  },
  {
    "type": "erlang",
    "named": false
  },
  {
    "type": "external",
    "named": false
  },
  {
    "type": "float",
    "named": true
  },
  {
    "type": "float",
    "named": false
  },
  {
    "type": "fn",
    "named": false
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "int",
    "named": false
  },
  {
    "type": "javascript",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "little",
    "named": false
  },
  {
    "type": "native",
    "named": false
  },
  {
    "type": "opacity_modifier",
    "named": true
  },
  {
    "type": "panic",
    "named": false
  },
  {
    "type": "quoted_content",
    "named": true
  },
  {
    "type": "signed",
    "named": false
  },
  {
    "type": "size",
    "named": false
  },
  {
    "type": "todo",
    "named": false
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "unit",
    "named": false
  },
  {
    "type": "unsigned",
    "named": false
  },
  {
    "type": "use",
    "named": false
  },
  {
    "type": "utf16",
    "named": false
  },
  {
    "type": "utf16_codepoint",
    "named": false
  },
  {
    "type": "utf32",
    "named": false
  },
  {
    "type": "utf32_codepoint",
    "named": false
  },
  {
    "type": "utf8",
    "named": false
  },
  {
    "type": "utf8_codepoint",
    "named": false
  },
  {
    "type": "visibility_modifier",
    "named": true
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|>",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]