{
  "type": "File",
  "start":0,"end":98,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":2}},
  "program": {
    "type": "Program",
    "start":0,"end":98,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":2}},
    "sourceType": "module",
    "interpreter": null,
    "body": [
      {
        "type": "TypeAlias",
        "start":0,"end":48,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}},
        "id": {
          "type": "Identifier",
          "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"A"},
          "name": "A"
        },
        "typeParameters": null,
        "right": {
          "type": "GenericTypeAnnotation",
          "start":9,"end":47,"loc":{"start":{"line":1,"column":9},"end":{"line":4,"column":1}},
          "typeParameters": {
            "type": "TypeParameterInstantiation",
            "start":12,"end":47,"loc":{"start":{"line":1,"column":12},"end":{"line":4,"column":1}},
            "params": [
              {
                "type": "UnionTypeAnnotation",
                "start":16,"end":45,"loc":{"start":{"line":2,"column":2},"end":{"line":3,"column":15}},
                "types": [
                  {
                    "type": "ObjectTypeAnnotation",
                    "start":18,"end":29,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":15}},
                    "callProperties": [],
                    "properties": [
                      {
                        "type": "ObjectTypeProperty",
                        "start":19,"end":28,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":14}},
                        "key": {
                          "type": "Identifier",
                          "start":19,"end":23,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":9},"identifierName":"type"},
                          "name": "type"
                        },
                        "static": false,
                        "proto": false,
                        "kind": "init",
                        "method": false,
                        "value": {
                          "type": "StringLiteralTypeAnnotation",
                          "start":25,"end":28,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":14}},
                          "extra": {
                            "rawValue": "A",
                            "raw": "\"A\""
                          },
                          "value": "A"
                        },
                        "variance": null,
                        "optional": false
                      }
                    ],
                    "indexers": [],
                    "internalSlots": [],
                    "exact": false,
                    "inexact": false
                  },
                  {
                    "type": "ObjectTypeAnnotation",
                    "start":34,"end":45,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":15}},
                    "callProperties": [],
                    "properties": [
                      {
                        "type": "ObjectTypeProperty",
                        "start":35,"end":44,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":14}},
                        "key": {
                          "type": "Identifier",
                          "start":35,"end":39,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":9},"identifierName":"type"},
                          "name": "type"
                        },
                        "static": false,
                        "proto": false,
                        "kind": "init",
                        "method": false,
                        "value": {
                          "type": "StringLiteralTypeAnnotation",
                          "start":41,"end":44,"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":14}},
                          "extra": {
                            "rawValue": "B",
                            "raw": "\"B\""
                          },
                          "value": "B"
                        },
                        "variance": null,
                        "optional": false
                      }
                    ],
                    "indexers": [],
                    "internalSlots": [],
                    "exact": false,
                    "inexact": false
                  }
                ]
              }
            ]
          },
          "id": {
            "type": "Identifier",
            "start":9,"end":12,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":12},"identifierName":"Foo"},
            "name": "Foo"
          }
        }
      },
      {
        "type": "TypeAlias",
        "start":50,"end":98,"loc":{"start":{"line":6,"column":0},"end":{"line":9,"column":2}},
        "id": {
          "type": "Identifier",
          "start":55,"end":56,"loc":{"start":{"line":6,"column":5},"end":{"line":6,"column":6},"identifierName":"B"},
          "name": "B"
        },
        "typeParameters": null,
        "right": {
          "type": "GenericTypeAnnotation",
          "start":59,"end":97,"loc":{"start":{"line":6,"column":9},"end":{"line":9,"column":1}},
          "typeParameters": {
            "type": "TypeParameterInstantiation",
            "start":62,"end":97,"loc":{"start":{"line":6,"column":12},"end":{"line":9,"column":1}},
            "params": [
              {
                "type": "IntersectionTypeAnnotation",
                "start":66,"end":95,"loc":{"start":{"line":7,"column":2},"end":{"line":8,"column":15}},
                "types": [
                  {
                    "type": "ObjectTypeAnnotation",
                    "start":68,"end":79,"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":15}},
                    "callProperties": [],
                    "properties": [
                      {
                        "type": "ObjectTypeProperty",
                        "start":69,"end":78,"loc":{"start":{"line":7,"column":5},"end":{"line":7,"column":14}},
                        "key": {
                          "type": "Identifier",
                          "start":69,"end":73,"loc":{"start":{"line":7,"column":5},"end":{"line":7,"column":9},"identifierName":"type"},
                          "name": "type"
                        },
                        "static": false,
                        "proto": false,
                        "kind": "init",
                        "method": false,
                        "value": {
                          "type": "StringLiteralTypeAnnotation",
                          "start":75,"end":78,"loc":{"start":{"line":7,"column":11},"end":{"line":7,"column":14}},
                          "extra": {
                            "rawValue": "A",
                            "raw": "\"A\""
                          },
                          "value": "A"
                        },
                        "variance": null,
                        "optional": false
                      }
                    ],
                    "indexers": [],
                    "internalSlots": [],
                    "exact": false,
                    "inexact": false
                  },
                  {
                    "type": "ObjectTypeAnnotation",
                    "start":84,"end":95,"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":15}},
                    "callProperties": [],
                    "properties": [
                      {
                        "type": "ObjectTypeProperty",
                        "start":85,"end":94,"loc":{"start":{"line":8,"column":5},"end":{"line":8,"column":14}},
                        "key": {
                          "type": "Identifier",
                          "start":85,"end":89,"loc":{"start":{"line":8,"column":5},"end":{"line":8,"column":9},"identifierName":"type"},
                          "name": "type"
                        },
                        "static": false,
                        "proto": false,
                        "kind": "init",
                        "method": false,
                        "value": {
                          "type": "StringLiteralTypeAnnotation",
                          "start":91,"end":94,"loc":{"start":{"line":8,"column":11},"end":{"line":8,"column":14}},
                          "extra": {
                            "rawValue": "B",
                            "raw": "\"B\""
                          },
                          "value": "B"
                        },
                        "variance": null,
                        "optional": false
                      }
                    ],
                    "indexers": [],
                    "internalSlots": [],
                    "exact": false,
                    "inexact": false
                  }
                ]
              }
            ]
          },
          "id": {
            "type": "Identifier",
            "start":59,"end":62,"loc":{"start":{"line":6,"column":9},"end":{"line":6,"column":12},"identifierName":"Foo"},
            "name": "Foo"
          }
        }
      }
    ],
    "directives": []
  }
}