[
  {
    "type": "conditional_type",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "constraint": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "curried_type",
    "named": true,
    "fields": {
      "from": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "to": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "declaration",
    "named": true,
    "fields": {
      "member": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "declaration_member",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "raw_string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "declaration_member",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier_pattern_name",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "identifier_pattern_name",
    "named": true,
    "fields": {}
  },
  {
    "type": "import",
    "named": true,
    "fields": {
      "import": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "import_type",
            "named": true
          }
        ]
      },
      "source": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "raw_string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "import_type",
    "named": true,
    "fields": {
      "as": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "intersection_type",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "keyof",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "list_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "map_type",
    "named": true,
    "fields": {
      "key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "property": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_variable_declaration_name",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "member_type",
    "named": true,
    "fields": {
      "key": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "shorthand_member_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parametric_type",
    "named": true,
    "fields": {
      "argument": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "program",
    "named": true,
    "fields": {
      "declaration": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "declaration",
            "named": true
          }
        ]
      },
      "import": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "import",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "raw_string",
    "named": true,
    "fields": {}
  },
  {
    "type": "shorthand_member_identifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "struct_type",
    "named": true,
    "fields": {
      "member": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "member_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "subtraction_type",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tagged_type",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_group",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_variable",
    "named": true,
    "fields": {}
  },
  {
    "type": "type_variable_declaration_name",
    "named": true,
    "fields": {}
  },
  {
    "type": "union_type",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "conditional_type",
            "named": true
          },
          {
            "type": "curried_type",
            "named": true
          },
          {
            "type": "intersection_type",
            "named": true
          },
          {
            "type": "keyof",
            "named": true
          },
          {
            "type": "list_type",
            "named": true
          },
          {
            "type": "map_type",
            "named": true
          },
          {
            "type": "parametric_type",
            "named": true
          },
          {
            "type": "struct_type",
            "named": true
          },
          {
            "type": "subtraction_type",
            "named": true
          },
          {
            "type": "tagged_type",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_group",
            "named": true
          },
          {
            "type": "type_variable",
            "named": true
          },
          {
            "type": "union_type",
            "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": "as",
    "named": false
  },
  {
    "type": "comment",
    "named": true
  },
  {
    "type": "declare",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "from",
    "named": false
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "keyof",
    "named": false
  },
  {
    "type": "r/",
    "named": false
  },
  {
    "type": "regex_flags",
    "named": true
  },
  {
    "type": "regex_pattern",
    "named": true
  },
  {
    "type": "then",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "type",
    "named": true
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]