[
  {
    "type": "action",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "scope_constraint",
          "named": true
        }
      ]
    }
  },
  {
    "type": "and_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "relation_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "annotation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "condition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "effect",
    "named": true,
    "fields": {}
  },
  {
    "type": "entity_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "entity_reference",
          "named": true
        }
      ]
    }
  },
  {
    "type": "entity_record",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "ref_init",
          "named": true
        }
      ]
    }
  },
  {
    "type": "entity_reference",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "entity_record",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "if_expression",
          "named": true
        },
        {
          "type": "or_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "extension_call",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_access",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "if_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "index_access",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "list_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "member_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "entity_reference",
          "named": true
        },
        {
          "type": "extension_call",
          "named": true
        },
        {
          "type": "false",
          "named": true
        },
        {
          "type": "field_access",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "index_access",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "list_expression",
          "named": true
        },
        {
          "type": "method_call",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "record_expression",
          "named": true
        },
        {
          "type": "slot",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "true",
          "named": true
        },
        {
          "type": "variable",
          "named": true
        }
      ]
    }
  },
  {
    "type": "method_call",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "or_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "and_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "policy",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "annotation",
          "named": true
        },
        {
          "type": "condition",
          "named": true
        },
        {
          "type": "effect",
          "named": true
        },
        {
          "type": "scope",
          "named": true
        },
        {
          "type": "template_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "policy_set",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "policy",
          "named": true
        }
      ]
    }
  },
  {
    "type": "principal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "scope_constraint",
          "named": true
        }
      ]
    }
  },
  {
    "type": "record_entry",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "string",
          "named": true
        }
      ]
    }
  },
  {
    "type": "record_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "record_entry",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ref_init",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "false",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "true",
          "named": true
        }
      ]
    }
  },
  {
    "type": "relation_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "name",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "unary_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "resource",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "scope_constraint",
          "named": true
        }
      ]
    }
  },
  {
    "type": "scope",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "action",
          "named": true
        },
        {
          "type": "principal",
          "named": true
        },
        {
          "type": "resource",
          "named": true
        }
      ]
    }
  },
  {
    "type": "scope_constraint",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "entity_list",
          "named": true
        },
        {
          "type": "entity_reference",
          "named": true
        },
        {
          "type": "name",
          "named": true
        },
        {
          "type": "slot",
          "named": true
        }
      ]
    }
  },
  {
    "type": "slot",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "type_reference",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        },
        {
          "type": "string_content",
          "named": true
        }
      ]
    }
  },
  {
    "type": "template_declaration",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "slot",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_reference",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "name",
          "named": true
        },
        {
          "type": "type_reference",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "member_expression",
          "named": true
        },
        {
          "type": "unary_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variable",
    "named": true,
    "fields": {}
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": "::",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "action",
    "named": false
  },
  {
    "type": "comment",
    "named": true,
    "extra": true
  },
  {
    "type": "context",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "false",
    "named": true
  },
  {
    "type": "forbid",
    "named": false
  },
  {
    "type": "has",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "integer",
    "named": true
  },
  {
    "type": "is",
    "named": false
  },
  {
    "type": "like",
    "named": false
  },
  {
    "type": "permit",
    "named": false
  },
  {
    "type": "principal",
    "named": false
  },
  {
    "type": "resource",
    "named": false
  },
  {
    "type": "string_content",
    "named": true
  },
  {
    "type": "template",
    "named": false
  },
  {
    "type": "then",
    "named": false
  },
  {
    "type": "true",
    "named": true
  },
  {
    "type": "unless",
    "named": false
  },
  {
    "type": "when",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]