{
  "type": "File",
  "start":0,"end":164,"loc":{"start":{"line":1,"column":0},"end":{"line":11,"column":1}},
  "program": {
    "type": "Program",
    "start":0,"end":164,"loc":{"start":{"line":1,"column":0},"end":{"line":11,"column":1}},
    "sourceType": "module",
    "interpreter": null,
    "body": [
      {
        "type": "ClassDeclaration",
        "start":0,"end":164,"loc":{"start":{"line":1,"column":0},"end":{"line":11,"column":1}},
        "id": {
          "type": "Identifier",
          "start":6,"end":9,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":9},"identifierName":"Foo"},
          "name": "Foo"
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start":10,"end":164,"loc":{"start":{"line":1,"column":10},"end":{"line":11,"column":1}},
          "body": [
            {
              "type": "ClassMethod",
              "start":14,"end":110,"loc":{"start":{"line":2,"column":2},"end":{"line":6,"column":3}},
              "static": false,
              "key": {
                "type": "Identifier",
                "start":14,"end":17,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":5},"identifierName":"foo"},
                "name": "foo"
              },
              "computed": false,
              "kind": "method",
              "id": null,
              "generator": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start":20,"end":110,"loc":{"start":{"line":2,"column":8},"end":{"line":6,"column":3}},
                "body": [
                  {
                    "type": "SwitchStatement",
                    "start":26,"end":106,"loc":{"start":{"line":3,"column":4},"end":{"line":5,"column":5}},
                    "discriminant": {
                      "type": "NumericLiteral",
                      "start":34,"end":35,"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":13}},
                      "extra": {
                        "rawValue": 1,
                        "raw": "1"
                      },
                      "value": 1
                    },
                    "cases": [
                      {
                        "type": "SwitchCase",
                        "start":45,"end":100,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":61}},
                        "consequent": [],
                        "test": {
                          "type": "BinaryExpression",
                          "start":51,"end":98,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":59}},
                          "left": {
                            "type": "MemberExpression",
                            "start":51,"end":71,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":32}},
                            "object": {
                              "type": "Identifier",
                              "start":51,"end":61,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":22},"identifierName":"MatrixType"},
                              "name": "MatrixType"
                            },
                            "property": {
                              "type": "Identifier",
                              "start":62,"end":71,"loc":{"start":{"line":4,"column":23},"end":{"line":4,"column":32},"identifierName":"IsScaling"},
                              "name": "IsScaling"
                            },
                            "computed": false
                          },
                          "operator": "|",
                          "right": {
                            "type": "MemberExpression",
                            "start":74,"end":98,"loc":{"start":{"line":4,"column":35},"end":{"line":4,"column":59}},
                            "object": {
                              "type": "Identifier",
                              "start":74,"end":84,"loc":{"start":{"line":4,"column":35},"end":{"line":4,"column":45},"identifierName":"MatrixType"},
                              "name": "MatrixType"
                            },
                            "property": {
                              "type": "Identifier",
                              "start":85,"end":98,"loc":{"start":{"line":4,"column":46},"end":{"line":4,"column":59},"identifierName":"IsTranslation"},
                              "name": "IsTranslation"
                            },
                            "computed": false
                          },
                          "extra": {
                            "parenthesized": true,
                            "parenStart": 50
                          }
                        }
                      }
                    ]
                  }
                ],
                "directives": []
              }
            },
            {
              "type": "ClassMethod",
              "start":114,"end":162,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":3}},
              "static": false,
              "key": {
                "type": "Identifier",
                "start":114,"end":117,"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":5},"identifierName":"bar"},
                "name": "bar"
              },
              "computed": false,
              "kind": "method",
              "id": null,
              "generator": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start":120,"end":162,"loc":{"start":{"line":8,"column":8},"end":{"line":10,"column":3}},
                "body": [
                  {
                    "type": "SwitchStatement",
                    "start":126,"end":158,"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":36}},
                    "discriminant": {
                      "type": "BinaryExpression",
                      "start":134,"end":154,"loc":{"start":{"line":9,"column":12},"end":{"line":9,"column":32}},
                      "left": {
                        "type": "BinaryExpression",
                        "start":135,"end":145,"loc":{"start":{"line":9,"column":13},"end":{"line":9,"column":23}},
                        "left": {
                          "type": "Identifier",
                          "start":135,"end":140,"loc":{"start":{"line":9,"column":13},"end":{"line":9,"column":18},"identifierName":"typeA"},
                          "name": "typeA"
                        },
                        "operator": "<<",
                        "right": {
                          "type": "NumericLiteral",
                          "start":144,"end":145,"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":23}},
                          "extra": {
                            "rawValue": 4,
                            "raw": "4"
                          },
                          "value": 4
                        },
                        "extra": {
                          "parenthesized": true,
                          "parenStart": 134
                        }
                      },
                      "operator": "|",
                      "right": {
                        "type": "Identifier",
                        "start":149,"end":154,"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":32},"identifierName":"typeB"},
                        "name": "typeB"
                      }
                    },
                    "cases": []
                  }
                ],
                "directives": []
              }
            }
          ]
        }
      }
    ],
    "directives": []
  }
}