[
  {
    "type": "class",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field",
          "named": true
        },
        {
          "type": "function",
          "named": true
        }
      ]
    }
  },
  {
    "type": "code",
    "named": true,
    "fields": {
      "package": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "package",
            "named": true
          }
        ]
      },
      "use": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "use",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "class",
          "named": true
        },
        {
          "type": "contract",
          "named": true
        },
        {
          "type": "function",
          "named": true
        }
      ]
    }
  },
  {
    "type": "contract",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field_header",
          "named": true
        },
        {
          "type": "function_header",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_header",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "param",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_header",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "param",
          "named": true
        },
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        }
      ]
    }
  },
  {
    "type": "identifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "package",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "package_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "package_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "param",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_array",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        },
        {
          "type": "type_array",
          "named": true
        },
        {
          "type": "word",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "package_name",
          "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": "class",
    "named": false
  },
  {
    "type": "contract",
    "named": false
  },
  {
    "type": "package",
    "named": false
  },
  {
    "type": "use",
    "named": false
  },
  {
    "type": "word",
    "named": true
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]