{
  "type": "File",
  "start": 0,
  "end": 4896,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 136,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 4896,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 136,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 0,
        "end": 48,
        "loc": {
          "start": {
            "line": 1,
            "column": 0
          },
          "end": {
            "line": 1,
            "column": 48
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 8,
            "end": 18,
            "loc": {
              "start": {
                "line": 1,
                "column": 8
              },
              "end": {
                "line": 1,
                "column": 18
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 8,
              "end": 18,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 8
                },
                "end": {
                  "line": 1,
                  "column": 18
                },
                "identifierName": "addCommand"
              },
              "name": "addCommand"
            },
            "local": {
              "type": "Identifier",
              "start": 8,
              "end": 18,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 8
                },
                "end": {
                  "line": 1,
                  "column": 18
                },
                "identifierName": "addCommand"
              },
              "name": "addCommand"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 25,
          "end": 47,
          "loc": {
            "start": {
              "line": 1,
              "column": 25
            },
            "end": {
              "line": 1,
              "column": 47
            }
          },
          "extra": {
            "rawValue": "../command/highlevel",
            "raw": "'../command/highlevel'"
          },
          "value": "../command/highlevel"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 49,
        "end": 82,
        "loc": {
          "start": {
            "line": 2,
            "column": 0
          },
          "end": {
            "line": 2,
            "column": 33
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 56,
            "end": 66,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 17
              }
            },
            "local": {
              "type": "Identifier",
              "start": 56,
              "end": 66,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 7
                },
                "end": {
                  "line": 2,
                  "column": 17
                },
                "identifierName": "Constraint"
              },
              "name": "Constraint"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 72,
          "end": 81,
          "loc": {
            "start": {
              "line": 2,
              "column": 23
            },
            "end": {
              "line": 2,
              "column": 32
            }
          },
          "extra": {
            "rawValue": "./index",
            "raw": "'./index'"
          },
          "value": "./index"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 83,
        "end": 144,
        "loc": {
          "start": {
            "line": 3,
            "column": 0
          },
          "end": {
            "line": 3,
            "column": 61
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 91,
            "end": 100,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 17
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 91,
              "end": 100,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 8
                },
                "end": {
                  "line": 3,
                  "column": 17
                },
                "identifierName": "incidence"
              },
              "name": "incidence"
            },
            "local": {
              "type": "Identifier",
              "start": 91,
              "end": 100,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 8
                },
                "end": {
                  "line": 3,
                  "column": 17
                },
                "identifierName": "incidence"
              },
              "name": "incidence"
            }
          },
          {
            "type": "ImportSpecifier",
            "start": 102,
            "end": 115,
            "loc": {
              "start": {
                "line": 3,
                "column": 19
              },
              "end": {
                "line": 3,
                "column": 32
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 102,
              "end": 115,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 19
                },
                "end": {
                  "line": 3,
                  "column": 32
                },
                "identifierName": "horizontality"
              },
              "name": "horizontality"
            },
            "local": {
              "type": "Identifier",
              "start": 102,
              "end": 115,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 19
                },
                "end": {
                  "line": 3,
                  "column": 32
                },
                "identifierName": "horizontality"
              },
              "name": "horizontality"
            }
          },
          {
            "type": "ImportSpecifier",
            "start": 117,
            "end": 128,
            "loc": {
              "start": {
                "line": 3,
                "column": 34
              },
              "end": {
                "line": 3,
                "column": 45
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 117,
              "end": 128,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 34
                },
                "end": {
                  "line": 3,
                  "column": 45
                },
                "identifierName": "verticality"
              },
              "name": "verticality"
            },
            "local": {
              "type": "Identifier",
              "start": 117,
              "end": 128,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 34
                },
                "end": {
                  "line": 3,
                  "column": 45
                },
                "identifierName": "verticality"
              },
              "name": "verticality"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 135,
          "end": 143,
          "loc": {
            "start": {
              "line": 3,
              "column": 52
            },
            "end": {
              "line": 3,
              "column": 60
            }
          },
          "extra": {
            "rawValue": "./type",
            "raw": "'./type'"
          },
          "value": "./type"
        }
      },
      {
        "type": "ExportDefaultDeclaration",
        "start": 146,
        "end": 3319,
        "loc": {
          "start": {
            "line": 5,
            "column": 0
          },
          "end": {
            "line": 79,
            "column": 1
          }
        },
        "declaration": {
          "type": "ClassDeclaration",
          "start": 161,
          "end": 3319,
          "loc": {
            "start": {
              "line": 5,
              "column": 15
            },
            "end": {
              "line": 79,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 167,
            "end": 182,
            "loc": {
              "start": {
                "line": 5,
                "column": 21
              },
              "end": {
                "line": 5,
                "column": 36
              },
              "identifierName": "ConstraintAdder"
            },
            "name": "ConstraintAdder"
          },
          "superClass": null,
          "body": {
            "type": "ClassBody",
            "start": 183,
            "end": 3319,
            "loc": {
              "start": {
                "line": 5,
                "column": 37
              },
              "end": {
                "line": 79,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassMethod",
                "start": 189,
                "end": 787,
                "loc": {
                  "start": {
                    "line": 6,
                    "column": 4
                  },
                  "end": {
                    "line": 21,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 189,
                  "end": 200,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 4
                    },
                    "end": {
                      "line": 6,
                      "column": 15
                    },
                    "identifierName": "constructor"
                  },
                  "name": "constructor"
                },
                "static": false,
                "kind": "constructor",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 201,
                    "end": 207,
                    "loc": {
                      "start": {
                        "line": 6,
                        "column": 16
                      },
                      "end": {
                        "line": 6,
                        "column": 22
                      },
                      "identifierName": "sketch"
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 209,
                  "end": 787,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 24
                    },
                    "end": {
                      "line": 21,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 276,
                      "end": 297,
                      "loc": {
                        "start": {
                          "line": 8,
                          "column": 8
                        },
                        "end": {
                          "line": 8,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 276,
                        "end": 296,
                        "loc": {
                          "start": {
                            "line": 8,
                            "column": 8
                          },
                          "end": {
                            "line": 8,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 276,
                          "end": 287,
                          "loc": {
                            "start": {
                              "line": 8,
                              "column": 8
                            },
                            "end": {
                              "line": 8,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 276,
                            "end": 280,
                            "loc": {
                              "start": {
                                "line": 8,
                                "column": 8
                              },
                              "end": {
                                "line": 8,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 281,
                            "end": 287,
                            "loc": {
                              "start": {
                                "line": 8,
                                "column": 13
                              },
                              "end": {
                                "line": 8,
                                "column": 19
                              },
                              "identifierName": "sketch"
                            },
                            "name": "sketch"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 290,
                          "end": 296,
                          "loc": {
                            "start": {
                              "line": 8,
                              "column": 22
                            },
                            "end": {
                              "line": 8,
                              "column": 28
                            },
                            "identifierName": "sketch"
                          },
                          "name": "sketch"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " the sketch we are going to add constraints to",
                          "start": 219,
                          "end": 267,
                          "loc": {
                            "start": {
                              "line": 7,
                              "column": 8
                            },
                            "end": {
                              "line": 7,
                              "column": 56
                            }
                          }
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " the list of constraint geomParams which really should be added",
                          "start": 306,
                          "end": 371,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 73
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 380,
                      "end": 402,
                      "loc": {
                        "start": {
                          "line": 10,
                          "column": 8
                        },
                        "end": {
                          "line": 10,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 380,
                        "end": 401,
                        "loc": {
                          "start": {
                            "line": 10,
                            "column": 8
                          },
                          "end": {
                            "line": 10,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 380,
                          "end": 396,
                          "loc": {
                            "start": {
                              "line": 10,
                              "column": 8
                            },
                            "end": {
                              "line": 10,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 380,
                            "end": 384,
                            "loc": {
                              "start": {
                                "line": 10,
                                "column": 8
                              },
                              "end": {
                                "line": 10,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 385,
                            "end": 396,
                            "loc": {
                              "start": {
                                "line": 10,
                                "column": 13
                              },
                              "end": {
                                "line": 10,
                                "column": 24
                              },
                              "identifierName": "constraints"
                            },
                            "name": "constraints"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 399,
                          "end": 401,
                          "loc": {
                            "start": {
                              "line": 10,
                              "column": 27
                            },
                            "end": {
                              "line": 10,
                              "column": 29
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " the list of constraint geomParams which really should be added",
                          "start": 306,
                          "end": 371,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 73
                            }
                          }
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " dsu structures for incident and inc-tangent point groups",
                          "start": 412,
                          "end": 471,
                          "loc": {
                            "start": {
                              "line": 12,
                              "column": 8
                            },
                            "end": {
                              "line": 12,
                              "column": 67
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 480,
                      "end": 510,
                      "loc": {
                        "start": {
                          "line": 13,
                          "column": 8
                        },
                        "end": {
                          "line": 13,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 480,
                        "end": 509,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 8
                          },
                          "end": {
                            "line": 13,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 480,
                          "end": 497,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 8
                            },
                            "end": {
                              "line": 13,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 480,
                            "end": 484,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 8
                              },
                              "end": {
                                "line": 13,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 485,
                            "end": 497,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 13
                              },
                              "end": {
                                "line": 13,
                                "column": 25
                              },
                              "identifierName": "incidenceDsu"
                            },
                            "name": "incidenceDsu"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 500,
                          "end": 509,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 28
                            },
                            "end": {
                              "line": 13,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 504,
                            "end": 507,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 32
                              },
                              "end": {
                                "line": 13,
                                "column": 35
                              },
                              "identifierName": "DSU"
                            },
                            "name": "DSU"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " dsu structures for incident and inc-tangent point groups",
                          "start": 412,
                          "end": 471,
                          "loc": {
                            "start": {
                              "line": 12,
                              "column": 8
                            },
                            "end": {
                              "line": 12,
                              "column": 67
                            }
                          }
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    // TODO!",
                          "start": 519,
                          "end": 562,
                          "loc": {
                            "start": {
                              "line": 14,
                              "column": 8
                            },
                            "end": {
                              "line": 14,
                              "column": 51
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " sets of horizontal and vertical lines",
                          "start": 571,
                          "end": 611,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 8
                            },
                            "end": {
                              "line": 15,
                              "column": 48
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 620,
                      "end": 651,
                      "loc": {
                        "start": {
                          "line": 16,
                          "column": 8
                        },
                        "end": {
                          "line": 16,
                          "column": 39
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 620,
                        "end": 650,
                        "loc": {
                          "start": {
                            "line": 16,
                            "column": 8
                          },
                          "end": {
                            "line": 16,
                            "column": 38
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 620,
                          "end": 638,
                          "loc": {
                            "start": {
                              "line": 16,
                              "column": 8
                            },
                            "end": {
                              "line": 16,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 620,
                            "end": 624,
                            "loc": {
                              "start": {
                                "line": 16,
                                "column": 8
                              },
                              "end": {
                                "line": 16,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 625,
                            "end": 638,
                            "loc": {
                              "start": {
                                "line": 16,
                                "column": 13
                              },
                              "end": {
                                "line": 16,
                                "column": 26
                              },
                              "identifierName": "horizontalSet"
                            },
                            "name": "horizontalSet"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 641,
                          "end": 650,
                          "loc": {
                            "start": {
                              "line": 16,
                              "column": 29
                            },
                            "end": {
                              "line": 16,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 645,
                            "end": 648,
                            "loc": {
                              "start": {
                                "line": 16,
                                "column": 33
                              },
                              "end": {
                                "line": 16,
                                "column": 36
                              },
                              "identifierName": "Set"
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    // TODO!",
                          "start": 519,
                          "end": 562,
                          "loc": {
                            "start": {
                              "line": 14,
                              "column": 8
                            },
                            "end": {
                              "line": 14,
                              "column": 51
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " sets of horizontal and vertical lines",
                          "start": 571,
                          "end": 611,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 8
                            },
                            "end": {
                              "line": 15,
                              "column": 48
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 660,
                      "end": 689,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 8
                        },
                        "end": {
                          "line": 17,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 660,
                        "end": 688,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 8
                          },
                          "end": {
                            "line": 17,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 660,
                          "end": 676,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 8
                            },
                            "end": {
                              "line": 17,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 660,
                            "end": 664,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 8
                              },
                              "end": {
                                "line": 17,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 665,
                            "end": 676,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 13
                              },
                              "end": {
                                "line": 17,
                                "column": 24
                              },
                              "identifierName": "verticalSet"
                            },
                            "name": "verticalSet"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 679,
                          "end": 688,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 27
                            },
                            "end": {
                              "line": 17,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 683,
                            "end": 686,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 31
                              },
                              "end": {
                                "line": 17,
                                "column": 34
                              },
                              "identifierName": "Set"
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " preprocess all objects and constraints currently on sketch",
                          "start": 699,
                          "end": 760,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 8
                            },
                            "end": {
                              "line": 19,
                              "column": 69
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 769,
                      "end": 781,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 8
                        },
                        "end": {
                          "line": 20,
                          "column": 20
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 769,
                        "end": 780,
                        "loc": {
                          "start": {
                            "line": 20,
                            "column": 8
                          },
                          "end": {
                            "line": 20,
                            "column": 19
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 769,
                          "end": 778,
                          "loc": {
                            "start": {
                              "line": 20,
                              "column": 8
                            },
                            "end": {
                              "line": 20,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 769,
                            "end": 773,
                            "loc": {
                              "start": {
                                "line": 20,
                                "column": 8
                              },
                              "end": {
                                "line": 20,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 774,
                            "end": 778,
                            "loc": {
                              "start": {
                                "line": 20,
                                "column": 13
                              },
                              "end": {
                                "line": 20,
                                "column": 17
                              },
                              "identifierName": "init"
                            },
                            "name": "init"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " preprocess all objects and constraints currently on sketch",
                          "start": 699,
                          "end": 760,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 8
                            },
                            "end": {
                              "line": 19,
                              "column": 69
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 793,
                "end": 1278,
                "loc": {
                  "start": {
                    "line": 23,
                    "column": 4
                  },
                  "end": {
                    "line": 32,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 793,
                  "end": 797,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 4
                    },
                    "end": {
                      "line": 23,
                      "column": 8
                    },
                    "identifierName": "init"
                  },
                  "name": "init"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 800,
                  "end": 1278,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 11
                    },
                    "end": {
                      "line": 32,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ForOfStatement",
                      "start": 863,
                      "end": 1272,
                      "loc": {
                        "start": {
                          "line": 25,
                          "column": 8
                        },
                        "end": {
                          "line": 31,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 868,
                        "end": 878,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 13
                          },
                          "end": {
                            "line": 25,
                            "column": 23
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 872,
                            "end": 878,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 17
                              },
                              "end": {
                                "line": 25,
                                "column": 23
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 872,
                              "end": 878,
                              "loc": {
                                "start": {
                                  "line": 25,
                                  "column": 17
                                },
                                "end": {
                                  "line": 25,
                                  "column": 23
                                },
                                "identifierName": "object"
                              },
                              "name": "object",
                              "leadingComments": null
                            },
                            "init": null,
                            "leadingComments": null
                          }
                        ],
                        "kind": "let",
                        "leadingComments": null
                      },
                      "right": {
                        "type": "MemberExpression",
                        "start": 882,
                        "end": 902,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 27
                          },
                          "end": {
                            "line": 25,
                            "column": 47
                          }
                        },
                        "object": {
                          "type": "MemberExpression",
                          "start": 882,
                          "end": 893,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 27
                            },
                            "end": {
                              "line": 25,
                              "column": 38
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 882,
                            "end": 886,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 27
                              },
                              "end": {
                                "line": 25,
                                "column": 31
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 887,
                            "end": 893,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 32
                              },
                              "end": {
                                "line": 25,
                                "column": 38
                              },
                              "identifierName": "sketch"
                            },
                            "name": "sketch"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 894,
                          "end": 902,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 39
                            },
                            "end": {
                              "line": 25,
                              "column": 47
                            },
                            "identifierName": "children"
                          },
                          "name": "children"
                        },
                        "computed": false
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 904,
                        "end": 1272,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 49
                          },
                          "end": {
                            "line": 31,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "SwitchStatement",
                            "start": 918,
                            "end": 1262,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 12
                              },
                              "end": {
                                "line": 30,
                                "column": 13
                              }
                            },
                            "discriminant": {
                              "type": "MemberExpression",
                              "start": 926,
                              "end": 944,
                              "loc": {
                                "start": {
                                  "line": 26,
                                  "column": 20
                                },
                                "end": {
                                  "line": 26,
                                  "column": 38
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 926,
                                "end": 938,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 32
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 926,
                                  "end": 932,
                                  "loc": {
                                    "start": {
                                      "line": 26,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 26,
                                      "column": 26
                                    },
                                    "identifierName": "object"
                                  },
                                  "name": "object"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 933,
                                  "end": 938,
                                  "loc": {
                                    "start": {
                                      "line": 26,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 26,
                                      "column": 32
                                    },
                                    "identifierName": "state"
                                  },
                                  "name": "state"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 939,
                                "end": 944,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 38
                                  },
                                  "identifierName": "class"
                                },
                                "name": "class"
                              },
                              "computed": false
                            },
                            "cases": [
                              {
                                "type": "SwitchCase",
                                "start": 964,
                                "end": 1062,
                                "loc": {
                                  "start": {
                                    "line": 27,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 27,
                                    "column": 114
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 985,
                                    "end": 1055,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 107
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 985,
                                      "end": 1054,
                                      "loc": {
                                        "start": {
                                          "line": 27,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 27,
                                          "column": 106
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 985,
                                        "end": 1008,
                                        "loc": {
                                          "start": {
                                            "line": 27,
                                            "column": 37
                                          },
                                          "end": {
                                            "line": 27,
                                            "column": 60
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 985,
                                          "end": 1002,
                                          "loc": {
                                            "start": {
                                              "line": 27,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 27,
                                              "column": 54
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 985,
                                            "end": 989,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 41
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 990,
                                            "end": 1002,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 42
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 54
                                              },
                                              "identifierName": "incidenceDsu"
                                            },
                                            "name": "incidenceDsu"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1003,
                                          "end": 1008,
                                          "loc": {
                                            "start": {
                                              "line": 27,
                                              "column": 55
                                            },
                                            "end": {
                                              "line": 27,
                                              "column": 60
                                            },
                                            "identifierName": "merge"
                                          },
                                          "name": "merge"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1009,
                                          "end": 1030,
                                          "loc": {
                                            "start": {
                                              "line": 27,
                                              "column": 61
                                            },
                                            "end": {
                                              "line": 27,
                                              "column": 82
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1009,
                                            "end": 1027,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 61
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 79
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1009,
                                              "end": 1024,
                                              "loc": {
                                                "start": {
                                                  "line": 27,
                                                  "column": 61
                                                },
                                                "end": {
                                                  "line": 27,
                                                  "column": 76
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1009,
                                                "end": 1015,
                                                "loc": {
                                                  "start": {
                                                    "line": 27,
                                                    "column": 61
                                                  },
                                                  "end": {
                                                    "line": 27,
                                                    "column": 67
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1016,
                                                "end": 1024,
                                                "loc": {
                                                  "start": {
                                                    "line": 27,
                                                    "column": 68
                                                  },
                                                  "end": {
                                                    "line": 27,
                                                    "column": 76
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1025,
                                              "end": 1026,
                                              "loc": {
                                                "start": {
                                                  "line": 27,
                                                  "column": 77
                                                },
                                                "end": {
                                                  "line": 27,
                                                  "column": 78
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1028,
                                            "end": 1030,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 80
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 82
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        },
                                        {
                                          "type": "MemberExpression",
                                          "start": 1032,
                                          "end": 1053,
                                          "loc": {
                                            "start": {
                                              "line": 27,
                                              "column": 84
                                            },
                                            "end": {
                                              "line": 27,
                                              "column": 105
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1032,
                                            "end": 1050,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 84
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 102
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1032,
                                              "end": 1047,
                                              "loc": {
                                                "start": {
                                                  "line": 27,
                                                  "column": 84
                                                },
                                                "end": {
                                                  "line": 27,
                                                  "column": 99
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1032,
                                                "end": 1038,
                                                "loc": {
                                                  "start": {
                                                    "line": 27,
                                                    "column": 84
                                                  },
                                                  "end": {
                                                    "line": 27,
                                                    "column": 90
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1039,
                                                "end": 1047,
                                                "loc": {
                                                  "start": {
                                                    "line": 27,
                                                    "column": 91
                                                  },
                                                  "end": {
                                                    "line": 27,
                                                    "column": 99
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1048,
                                              "end": 1049,
                                              "loc": {
                                                "start": {
                                                  "line": 27,
                                                  "column": 100
                                                },
                                                "end": {
                                                  "line": 27,
                                                  "column": 101
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 1,
                                                "raw": "1"
                                              },
                                              "value": 1
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1051,
                                            "end": 1053,
                                            "loc": {
                                              "start": {
                                                "line": 27,
                                                "column": 103
                                              },
                                              "end": {
                                                "line": 27,
                                                "column": 105
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1056,
                                    "end": 1062,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 108
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 114
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 969,
                                  "end": 983,
                                  "loc": {
                                    "start": {
                                      "line": 27,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 27,
                                      "column": 35
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 969,
                                    "end": 978,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 30
                                      },
                                      "identifierName": "incidence"
                                    },
                                    "name": "incidence"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 979,
                                    "end": 983,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 31
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 35
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              },
                              {
                                "type": "SwitchCase",
                                "start": 1079,
                                "end": 1153,
                                "loc": {
                                  "start": {
                                    "line": 28,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 28,
                                    "column": 90
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 1102,
                                    "end": 1146,
                                    "loc": {
                                      "start": {
                                        "line": 28,
                                        "column": 39
                                      },
                                      "end": {
                                        "line": 28,
                                        "column": 83
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 1102,
                                      "end": 1145,
                                      "loc": {
                                        "start": {
                                          "line": 28,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 28,
                                          "column": 82
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 1102,
                                        "end": 1122,
                                        "loc": {
                                          "start": {
                                            "line": 28,
                                            "column": 39
                                          },
                                          "end": {
                                            "line": 28,
                                            "column": 59
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 1102,
                                          "end": 1118,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 55
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 1102,
                                            "end": 1106,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 39
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 43
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1107,
                                            "end": 1118,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 44
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 55
                                              },
                                              "identifierName": "verticalSet"
                                            },
                                            "name": "verticalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1119,
                                          "end": 1122,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 56
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 59
                                            },
                                            "identifierName": "add"
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1123,
                                          "end": 1144,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 81
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1123,
                                            "end": 1141,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 78
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1123,
                                              "end": 1138,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 75
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1123,
                                                "end": 1129,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 60
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 66
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1130,
                                                "end": 1138,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 67
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 75
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1139,
                                              "end": 1140,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 76
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 77
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1142,
                                            "end": 1144,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 79
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 81
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1147,
                                    "end": 1153,
                                    "loc": {
                                      "start": {
                                        "line": 28,
                                        "column": 84
                                      },
                                      "end": {
                                        "line": 28,
                                        "column": 90
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 1084,
                                  "end": 1100,
                                  "loc": {
                                    "start": {
                                      "line": 28,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 28,
                                      "column": 37
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1084,
                                    "end": 1095,
                                    "loc": {
                                      "start": {
                                        "line": 28,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 28,
                                        "column": 32
                                      },
                                      "identifierName": "verticality"
                                    },
                                    "name": "verticality"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1096,
                                    "end": 1100,
                                    "loc": {
                                      "start": {
                                        "line": 28,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 28,
                                        "column": 37
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              },
                              {
                                "type": "SwitchCase",
                                "start": 1170,
                                "end": 1248,
                                "loc": {
                                  "start": {
                                    "line": 29,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 29,
                                    "column": 94
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 1195,
                                    "end": 1241,
                                    "loc": {
                                      "start": {
                                        "line": 29,
                                        "column": 41
                                      },
                                      "end": {
                                        "line": 29,
                                        "column": 87
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 1195,
                                      "end": 1240,
                                      "loc": {
                                        "start": {
                                          "line": 29,
                                          "column": 41
                                        },
                                        "end": {
                                          "line": 29,
                                          "column": 86
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 1195,
                                        "end": 1217,
                                        "loc": {
                                          "start": {
                                            "line": 29,
                                            "column": 41
                                          },
                                          "end": {
                                            "line": 29,
                                            "column": 63
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 1195,
                                          "end": 1213,
                                          "loc": {
                                            "start": {
                                              "line": 29,
                                              "column": 41
                                            },
                                            "end": {
                                              "line": 29,
                                              "column": 59
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 1195,
                                            "end": 1199,
                                            "loc": {
                                              "start": {
                                                "line": 29,
                                                "column": 41
                                              },
                                              "end": {
                                                "line": 29,
                                                "column": 45
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1200,
                                            "end": 1213,
                                            "loc": {
                                              "start": {
                                                "line": 29,
                                                "column": 46
                                              },
                                              "end": {
                                                "line": 29,
                                                "column": 59
                                              },
                                              "identifierName": "horizontalSet"
                                            },
                                            "name": "horizontalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1214,
                                          "end": 1217,
                                          "loc": {
                                            "start": {
                                              "line": 29,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 29,
                                              "column": 63
                                            },
                                            "identifierName": "add"
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1218,
                                          "end": 1239,
                                          "loc": {
                                            "start": {
                                              "line": 29,
                                              "column": 64
                                            },
                                            "end": {
                                              "line": 29,
                                              "column": 85
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1218,
                                            "end": 1236,
                                            "loc": {
                                              "start": {
                                                "line": 29,
                                                "column": 64
                                              },
                                              "end": {
                                                "line": 29,
                                                "column": 82
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1218,
                                              "end": 1233,
                                              "loc": {
                                                "start": {
                                                  "line": 29,
                                                  "column": 64
                                                },
                                                "end": {
                                                  "line": 29,
                                                  "column": 79
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1218,
                                                "end": 1224,
                                                "loc": {
                                                  "start": {
                                                    "line": 29,
                                                    "column": 64
                                                  },
                                                  "end": {
                                                    "line": 29,
                                                    "column": 70
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1225,
                                                "end": 1233,
                                                "loc": {
                                                  "start": {
                                                    "line": 29,
                                                    "column": 71
                                                  },
                                                  "end": {
                                                    "line": 29,
                                                    "column": 79
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1234,
                                              "end": 1235,
                                              "loc": {
                                                "start": {
                                                  "line": 29,
                                                  "column": 80
                                                },
                                                "end": {
                                                  "line": 29,
                                                  "column": 81
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1237,
                                            "end": 1239,
                                            "loc": {
                                              "start": {
                                                "line": 29,
                                                "column": 83
                                              },
                                              "end": {
                                                "line": 29,
                                                "column": 85
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1242,
                                    "end": 1248,
                                    "loc": {
                                      "start": {
                                        "line": 29,
                                        "column": 88
                                      },
                                      "end": {
                                        "line": 29,
                                        "column": 94
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 1175,
                                  "end": 1193,
                                  "loc": {
                                    "start": {
                                      "line": 29,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 29,
                                      "column": 39
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1175,
                                    "end": 1188,
                                    "loc": {
                                      "start": {
                                        "line": 29,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 29,
                                        "column": 34
                                      },
                                      "identifierName": "horizontality"
                                    },
                                    "name": "horizontality"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1189,
                                    "end": 1193,
                                    "loc": {
                                      "start": {
                                        "line": 29,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 29,
                                        "column": 39
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              }
                            ]
                          }
                        ],
                        "directives": []
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " take all present constraints into account",
                          "start": 810,
                          "end": 854,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 8
                            },
                            "end": {
                              "line": 24,
                              "column": 52
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "directives": [],
                  "trailingComments": null
                },
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " add a new constraint to the internal buffer (if it is not excessive)",
                    "start": 1284,
                    "end": 1355,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 4
                      },
                      "end": {
                        "line": 34,
                        "column": 75
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassMethod",
                "start": 1360,
                "end": 3060,
                "loc": {
                  "start": {
                    "line": 35,
                    "column": 4
                  },
                  "end": {
                    "line": 71,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1360,
                  "end": 1363,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 4
                    },
                    "end": {
                      "line": 35,
                      "column": 7
                    },
                    "identifierName": "add"
                  },
                  "name": "add",
                  "leadingComments": null
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1364,
                    "end": 1368,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 8
                      },
                      "end": {
                        "line": 35,
                        "column": 12
                      },
                      "identifierName": "type"
                    },
                    "name": "type"
                  },
                  {
                    "type": "Identifier",
                    "start": 1370,
                    "end": 1378,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 14
                      },
                      "end": {
                        "line": 35,
                        "column": 22
                      },
                      "identifierName": "entities"
                    },
                    "name": "entities"
                  },
                  {
                    "type": "AssignmentPattern",
                    "start": 1380,
                    "end": 1390,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 24
                      },
                      "end": {
                        "line": 35,
                        "column": 34
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 1380,
                      "end": 1385,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 24
                        },
                        "end": {
                          "line": 35,
                          "column": 29
                        },
                        "identifierName": "value"
                      },
                      "name": "value"
                    },
                    "right": {
                      "type": "ObjectExpression",
                      "start": 1388,
                      "end": 1390,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 32
                        },
                        "end": {
                          "line": 35,
                          "column": 34
                        }
                      },
                      "properties": []
                    }
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1392,
                  "end": 3060,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 36
                    },
                    "end": {
                      "line": 71,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 1402,
                      "end": 1448,
                      "loc": {
                        "start": {
                          "line": 36,
                          "column": 8
                        },
                        "end": {
                          "line": 36,
                          "column": 54
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 1406,
                        "end": 1429,
                        "loc": {
                          "start": {
                            "line": 36,
                            "column": 12
                          },
                          "end": {
                            "line": 36,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 1406,
                          "end": 1415,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 12
                            },
                            "end": {
                              "line": 36,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1406,
                            "end": 1410,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 12
                              },
                              "end": {
                                "line": 36,
                                "column": 16
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1411,
                            "end": 1415,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 17
                              },
                              "end": {
                                "line": 36,
                                "column": 21
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "computed": false
                        },
                        "operator": "!==",
                        "right": {
                          "type": "Identifier",
                          "start": 1420,
                          "end": 1429,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 26
                            },
                            "end": {
                              "line": 36,
                              "column": 35
                            },
                            "identifierName": "undefined"
                          },
                          "name": "undefined"
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 1431,
                        "end": 1448,
                        "loc": {
                          "start": {
                            "line": 36,
                            "column": 37
                          },
                          "end": {
                            "line": 36,
                            "column": 54
                          }
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "start": 1431,
                          "end": 1447,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 37
                            },
                            "end": {
                              "line": 36,
                              "column": 53
                            }
                          },
                          "operator": "=",
                          "left": {
                            "type": "Identifier",
                            "start": 1431,
                            "end": 1435,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 37
                              },
                              "end": {
                                "line": 36,
                                "column": 41
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "right": {
                            "type": "MemberExpression",
                            "start": 1438,
                            "end": 1447,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 44
                              },
                              "end": {
                                "line": 36,
                                "column": 53
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1438,
                              "end": 1442,
                              "loc": {
                                "start": {
                                  "line": 36,
                                  "column": 44
                                },
                                "end": {
                                  "line": 36,
                                  "column": 48
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1443,
                              "end": 1447,
                              "loc": {
                                "start": {
                                  "line": 36,
                                  "column": 49
                                },
                                "end": {
                                  "line": 36,
                                  "column": 53
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 1457,
                      "end": 1507,
                      "loc": {
                        "start": {
                          "line": 37,
                          "column": 8
                        },
                        "end": {
                          "line": 37,
                          "column": 58
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1463,
                          "end": 1506,
                          "loc": {
                            "start": {
                              "line": 37,
                              "column": 14
                            },
                            "end": {
                              "line": 37,
                              "column": 57
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1463,
                            "end": 1473,
                            "loc": {
                              "start": {
                                "line": 37,
                                "column": 14
                              },
                              "end": {
                                "line": 37,
                                "column": 24
                              },
                              "identifierName": "geomParams"
                            },
                            "name": "geomParams"
                          },
                          "init": {
                            "type": "ObjectExpression",
                            "start": 1476,
                            "end": 1506,
                            "loc": {
                              "start": {
                                "line": 37,
                                "column": 27
                              },
                              "end": {
                                "line": 37,
                                "column": 57
                              }
                            },
                            "properties": [
                              {
                                "type": "ObjectProperty",
                                "start": 1477,
                                "end": 1488,
                                "loc": {
                                  "start": {
                                    "line": 37,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 37,
                                    "column": 39
                                  }
                                },
                                "method": false,
                                "shorthand": false,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1477,
                                  "end": 1482,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 28
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 33
                                    },
                                    "identifierName": "class"
                                  },
                                  "name": "class"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1484,
                                  "end": 1488,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 39
                                    },
                                    "identifierName": "type"
                                  },
                                  "name": "type"
                                }
                              },
                              {
                                "type": "ObjectProperty",
                                "start": 1490,
                                "end": 1498,
                                "loc": {
                                  "start": {
                                    "line": 37,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 37,
                                    "column": 49
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1490,
                                  "end": 1498,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 49
                                    },
                                    "identifierName": "entities"
                                  },
                                  "name": "entities"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1490,
                                  "end": 1498,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 49
                                    },
                                    "identifierName": "entities"
                                  },
                                  "name": "entities"
                                },
                                "extra": {
                                  "shorthand": true
                                }
                              },
                              {
                                "type": "ObjectProperty",
                                "start": 1500,
                                "end": 1505,
                                "loc": {
                                  "start": {
                                    "line": 37,
                                    "column": 51
                                  },
                                  "end": {
                                    "line": 37,
                                    "column": 56
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1500,
                                  "end": 1505,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 51
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 56
                                    },
                                    "identifierName": "value"
                                  },
                                  "name": "value"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1500,
                                  "end": 1505,
                                  "loc": {
                                    "start": {
                                      "line": 37,
                                      "column": 51
                                    },
                                    "end": {
                                      "line": 37,
                                      "column": 56
                                    },
                                    "identifierName": "value"
                                  },
                                  "name": "value"
                                },
                                "extra": {
                                  "shorthand": true
                                }
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const",
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " if a new constraint is not excessive, then take it into account",
                          "start": 1516,
                          "end": 1582,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 8
                            },
                            "end": {
                              "line": 38,
                              "column": 74
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "SwitchStatement",
                      "start": 1591,
                      "end": 3011,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 8
                        },
                        "end": {
                          "line": 69,
                          "column": 9
                        }
                      },
                      "discriminant": {
                        "type": "Identifier",
                        "start": 1599,
                        "end": 1603,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 16
                          },
                          "end": {
                            "line": 39,
                            "column": 20
                          },
                          "identifierName": "type"
                        },
                        "name": "type",
                        "leadingComments": null
                      },
                      "cases": [
                        {
                          "type": "SwitchCase",
                          "start": 1619,
                          "end": 2181,
                          "loc": {
                            "start": {
                              "line": 40,
                              "column": 12
                            },
                            "end": {
                              "line": 48,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 1940,
                              "end": 2158,
                              "loc": {
                                "start": {
                                  "line": 44,
                                  "column": 16
                                },
                                "end": {
                                  "line": 47,
                                  "column": 27
                                }
                              },
                              "test": {
                                "type": "BinaryExpression",
                                "start": 1944,
                                "end": 2031,
                                "loc": {
                                  "start": {
                                    "line": 44,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 44,
                                    "column": 107
                                  }
                                },
                                "left": {
                                  "type": "CallExpression",
                                  "start": 1944,
                                  "end": 1985,
                                  "loc": {
                                    "start": {
                                      "line": 44,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 44,
                                      "column": 61
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 1944,
                                    "end": 1969,
                                    "loc": {
                                      "start": {
                                        "line": 44,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 44,
                                        "column": 45
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1944,
                                      "end": 1961,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 1944,
                                        "end": 1948,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 24
                                          }
                                        },
                                        "leadingComments": null
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1949,
                                        "end": 1961,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 37
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false,
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1962,
                                      "end": 1969,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 45
                                        },
                                        "identifierName": "getHead"
                                      },
                                      "name": "getHead"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 1970,
                                      "end": 1984,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 46
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 60
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 1970,
                                        "end": 1981,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 46
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 57
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 1970,
                                          "end": 1978,
                                          "loc": {
                                            "start": {
                                              "line": 44,
                                              "column": 46
                                            },
                                            "end": {
                                              "line": 44,
                                              "column": 54
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 1979,
                                          "end": 1980,
                                          "loc": {
                                            "start": {
                                              "line": 44,
                                              "column": 55
                                            },
                                            "end": {
                                              "line": 44,
                                              "column": 56
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1982,
                                        "end": 1984,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 58
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 60
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ],
                                  "leadingComments": null
                                },
                                "operator": "!==",
                                "right": {
                                  "type": "CallExpression",
                                  "start": 1990,
                                  "end": 2031,
                                  "loc": {
                                    "start": {
                                      "line": 44,
                                      "column": 66
                                    },
                                    "end": {
                                      "line": 44,
                                      "column": 107
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 1990,
                                    "end": 2015,
                                    "loc": {
                                      "start": {
                                        "line": 44,
                                        "column": 66
                                      },
                                      "end": {
                                        "line": 44,
                                        "column": 91
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1990,
                                      "end": 2007,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 66
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 83
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 1990,
                                        "end": 1994,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 66
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 70
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1995,
                                        "end": 2007,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 71
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 83
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2008,
                                      "end": 2015,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 84
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 91
                                        },
                                        "identifierName": "getHead"
                                      },
                                      "name": "getHead"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2016,
                                      "end": 2030,
                                      "loc": {
                                        "start": {
                                          "line": 44,
                                          "column": 92
                                        },
                                        "end": {
                                          "line": 44,
                                          "column": 106
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2016,
                                        "end": 2027,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 92
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 103
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2016,
                                          "end": 2024,
                                          "loc": {
                                            "start": {
                                              "line": 44,
                                              "column": 92
                                            },
                                            "end": {
                                              "line": 44,
                                              "column": 100
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2025,
                                          "end": 2026,
                                          "loc": {
                                            "start": {
                                              "line": 44,
                                              "column": 101
                                            },
                                            "end": {
                                              "line": 44,
                                              "column": 102
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 1,
                                            "raw": "1"
                                          },
                                          "value": 1
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2028,
                                        "end": 2030,
                                        "loc": {
                                          "start": {
                                            "line": 44,
                                            "column": 104
                                          },
                                          "end": {
                                            "line": 44,
                                            "column": 106
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "leadingComments": null
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2053,
                                "end": 2109,
                                "loc": {
                                  "start": {
                                    "line": 45,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 45,
                                    "column": 76
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2053,
                                  "end": 2108,
                                  "loc": {
                                    "start": {
                                      "line": 45,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 45,
                                      "column": 75
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2053,
                                    "end": 2076,
                                    "loc": {
                                      "start": {
                                        "line": 45,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 45,
                                        "column": 43
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2053,
                                      "end": 2070,
                                      "loc": {
                                        "start": {
                                          "line": 45,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 45,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2053,
                                        "end": 2057,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 24
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2058,
                                        "end": 2070,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 37
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2071,
                                      "end": 2076,
                                      "loc": {
                                        "start": {
                                          "line": 45,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 45,
                                          "column": 43
                                        },
                                        "identifierName": "merge"
                                      },
                                      "name": "merge"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2077,
                                      "end": 2091,
                                      "loc": {
                                        "start": {
                                          "line": 45,
                                          "column": 44
                                        },
                                        "end": {
                                          "line": 45,
                                          "column": 58
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2077,
                                        "end": 2088,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 55
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2077,
                                          "end": 2085,
                                          "loc": {
                                            "start": {
                                              "line": 45,
                                              "column": 44
                                            },
                                            "end": {
                                              "line": 45,
                                              "column": 52
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2086,
                                          "end": 2087,
                                          "loc": {
                                            "start": {
                                              "line": 45,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 45,
                                              "column": 54
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2089,
                                        "end": 2091,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 58
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 2093,
                                      "end": 2107,
                                      "loc": {
                                        "start": {
                                          "line": 45,
                                          "column": 60
                                        },
                                        "end": {
                                          "line": 45,
                                          "column": 74
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2093,
                                        "end": 2104,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 60
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 71
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2093,
                                          "end": 2101,
                                          "loc": {
                                            "start": {
                                              "line": 45,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 45,
                                              "column": 68
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2102,
                                          "end": 2103,
                                          "loc": {
                                            "start": {
                                              "line": 45,
                                              "column": 69
                                            },
                                            "end": {
                                              "line": 45,
                                              "column": 70
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 1,
                                            "raw": "1"
                                          },
                                          "value": 1
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2105,
                                        "end": 2107,
                                        "loc": {
                                          "start": {
                                            "line": 45,
                                            "column": 72
                                          },
                                          "end": {
                                            "line": 45,
                                            "column": 74
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2151,
                                "end": 2158,
                                "loc": {
                                  "start": {
                                    "line": 47,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 47,
                                    "column": 27
                                  }
                                },
                                "argument": null
                              },
                              "leadingComments": [
                                {
                                  "type": "CommentLine",
                                  "value": " TODO: implement more complicated handling of incidence",
                                  "start": 1656,
                                  "end": 1713,
                                  "loc": {
                                    "start": {
                                      "line": 41,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 41,
                                      "column": 73
                                    }
                                  }
                                },
                                {
                                  "type": "CommentLine",
                                  "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
                                  "start": 1730,
                                  "end": 1823,
                                  "loc": {
                                    "start": {
                                      "line": 42,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 42,
                                      "column": 109
                                    }
                                  }
                                },
                                {
                                  "type": "CommentLine",
                                  "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
                                  "start": 1840,
                                  "end": 1923,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 99
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2175,
                              "end": 2181,
                              "loc": {
                                "start": {
                                  "line": 48,
                                  "column": 16
                                },
                                "end": {
                                  "line": 48,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 1624,
                            "end": 1638,
                            "loc": {
                              "start": {
                                "line": 40,
                                "column": 17
                              },
                              "end": {
                                "line": 40,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1624,
                              "end": 1633,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 17
                                },
                                "end": {
                                  "line": 40,
                                  "column": 26
                                },
                                "identifierName": "incidence"
                              },
                              "name": "incidence"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1634,
                              "end": 1638,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 27
                                },
                                "end": {
                                  "line": 40,
                                  "column": 31
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2194,
                          "end": 2405,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 12
                            },
                            "end": {
                              "line": 54,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2233,
                              "end": 2382,
                              "loc": {
                                "start": {
                                  "line": 50,
                                  "column": 16
                                },
                                "end": {
                                  "line": 53,
                                  "column": 27
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 2237,
                                "end": 2274,
                                "loc": {
                                  "start": {
                                    "line": 50,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 50,
                                    "column": 57
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 2238,
                                  "end": 2274,
                                  "loc": {
                                    "start": {
                                      "line": 50,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 50,
                                      "column": 57
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2238,
                                    "end": 2258,
                                    "loc": {
                                      "start": {
                                        "line": 50,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 50,
                                        "column": 41
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2238,
                                      "end": 2254,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2238,
                                        "end": 2242,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 25
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2243,
                                        "end": 2254,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 37
                                          },
                                          "identifierName": "verticalSet"
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2255,
                                      "end": 2258,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 41
                                        },
                                        "identifierName": "has"
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2259,
                                      "end": 2273,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 42
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 56
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2259,
                                        "end": 2270,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 42
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 53
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2259,
                                          "end": 2267,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 42
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 50
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2268,
                                          "end": 2269,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 51
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 52
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2271,
                                        "end": 2273,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 54
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 56
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "extra": {
                                  "parenthesizedArgument": false
                                }
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2296,
                                "end": 2333,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 57
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2296,
                                  "end": 2332,
                                  "loc": {
                                    "start": {
                                      "line": 51,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 51,
                                      "column": 56
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2296,
                                    "end": 2316,
                                    "loc": {
                                      "start": {
                                        "line": 51,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 51,
                                        "column": 40
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2296,
                                      "end": 2312,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 36
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2296,
                                        "end": 2300,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 24
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2301,
                                        "end": 2312,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 36
                                          },
                                          "identifierName": "verticalSet"
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2313,
                                      "end": 2316,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 40
                                        },
                                        "identifierName": "add"
                                      },
                                      "name": "add"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2317,
                                      "end": 2331,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 41
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 55
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2317,
                                        "end": 2328,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 41
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 52
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2317,
                                          "end": 2325,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 41
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 49
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2326,
                                          "end": 2327,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 50
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 51
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2329,
                                        "end": 2331,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 53
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 55
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2375,
                                "end": 2382,
                                "loc": {
                                  "start": {
                                    "line": 53,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 53,
                                    "column": 27
                                  }
                                },
                                "argument": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2399,
                              "end": 2405,
                              "loc": {
                                "start": {
                                  "line": 54,
                                  "column": 16
                                },
                                "end": {
                                  "line": 54,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 2199,
                            "end": 2215,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 17
                              },
                              "end": {
                                "line": 49,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2199,
                              "end": 2210,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 17
                                },
                                "end": {
                                  "line": 49,
                                  "column": 28
                                },
                                "identifierName": "verticality"
                              },
                              "name": "verticality"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2211,
                              "end": 2215,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 29
                                },
                                "end": {
                                  "line": 49,
                                  "column": 33
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2418,
                          "end": 2635,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 12
                            },
                            "end": {
                              "line": 60,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2459,
                              "end": 2612,
                              "loc": {
                                "start": {
                                  "line": 56,
                                  "column": 16
                                },
                                "end": {
                                  "line": 59,
                                  "column": 27
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 2463,
                                "end": 2502,
                                "loc": {
                                  "start": {
                                    "line": 56,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 56,
                                    "column": 59
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 2464,
                                  "end": 2502,
                                  "loc": {
                                    "start": {
                                      "line": 56,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 56,
                                      "column": 59
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2464,
                                    "end": 2486,
                                    "loc": {
                                      "start": {
                                        "line": 56,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 56,
                                        "column": 43
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2464,
                                      "end": 2482,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2464,
                                        "end": 2468,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 25
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2469,
                                        "end": 2482,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 39
                                          },
                                          "identifierName": "horizontalSet"
                                        },
                                        "name": "horizontalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2483,
                                      "end": 2486,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 40
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 43
                                        },
                                        "identifierName": "has"
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2487,
                                      "end": 2501,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 44
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 58
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2487,
                                        "end": 2498,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 55
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2487,
                                          "end": 2495,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 44
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 52
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2496,
                                          "end": 2497,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 54
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2499,
                                        "end": 2501,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 58
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "extra": {
                                  "parenthesizedArgument": false
                                }
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2524,
                                "end": 2563,
                                "loc": {
                                  "start": {
                                    "line": 57,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 57,
                                    "column": 59
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2524,
                                  "end": 2562,
                                  "loc": {
                                    "start": {
                                      "line": 57,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 57,
                                      "column": 58
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2524,
                                    "end": 2546,
                                    "loc": {
                                      "start": {
                                        "line": 57,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 57,
                                        "column": 42
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2524,
                                      "end": 2542,
                                      "loc": {
                                        "start": {
                                          "line": 57,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 57,
                                          "column": 38
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2524,
                                        "end": 2528,
                                        "loc": {
                                          "start": {
                                            "line": 57,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 57,
                                            "column": 24
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2529,
                                        "end": 2542,
                                        "loc": {
                                          "start": {
                                            "line": 57,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 57,
                                            "column": 38
                                          },
                                          "identifierName": "horizontalSet"
                                        },
                                        "name": "horizontalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2543,
                                      "end": 2546,
                                      "loc": {
                                        "start": {
                                          "line": 57,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 57,
                                          "column": 42
                                        },
                                        "identifierName": "add"
                                      },
                                      "name": "add"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2547,
                                      "end": 2561,
                                      "loc": {
                                        "start": {
                                          "line": 57,
                                          "column": 43
                                        },
                                        "end": {
                                          "line": 57,
                                          "column": 57
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2547,
                                        "end": 2558,
                                        "loc": {
                                          "start": {
                                            "line": 57,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 57,
                                            "column": 54
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2547,
                                          "end": 2555,
                                          "loc": {
                                            "start": {
                                              "line": 57,
                                              "column": 43
                                            },
                                            "end": {
                                              "line": 57,
                                              "column": 51
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2556,
                                          "end": 2557,
                                          "loc": {
                                            "start": {
                                              "line": 57,
                                              "column": 52
                                            },
                                            "end": {
                                              "line": 57,
                                              "column": 53
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2559,
                                        "end": 2561,
                                        "loc": {
                                          "start": {
                                            "line": 57,
                                            "column": 55
                                          },
                                          "end": {
                                            "line": 57,
                                            "column": 57
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2605,
                                "end": 2612,
                                "loc": {
                                  "start": {
                                    "line": 59,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 59,
                                    "column": 27
                                  }
                                },
                                "argument": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2629,
                              "end": 2635,
                              "loc": {
                                "start": {
                                  "line": 60,
                                  "column": 16
                                },
                                "end": {
                                  "line": 60,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 2423,
                            "end": 2441,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 17
                              },
                              "end": {
                                "line": 55,
                                "column": 35
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2423,
                              "end": 2436,
                              "loc": {
                                "start": {
                                  "line": 55,
                                  "column": 17
                                },
                                "end": {
                                  "line": 55,
                                  "column": 30
                                },
                                "identifierName": "horizontality"
                              },
                              "name": "horizontality"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2437,
                              "end": 2441,
                              "loc": {
                                "start": {
                                  "line": 55,
                                  "column": 31
                                },
                                "end": {
                                  "line": 55,
                                  "column": 35
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2648,
                          "end": 3001,
                          "loc": {
                            "start": {
                              "line": 61,
                              "column": 12
                            },
                            "end": {
                              "line": 68,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2724,
                              "end": 2821,
                              "loc": {
                                "start": {
                                  "line": 63,
                                  "column": 16
                                },
                                "end": {
                                  "line": 64,
                                  "column": 27
                                }
                              },
                              "test": {
                                "type": "CallExpression",
                                "start": 2728,
                                "end": 2792,
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 63,
                                    "column": 84
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2728,
                                  "end": 2749,
                                  "loc": {
                                    "start": {
                                      "line": 63,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 63,
                                      "column": 41
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2728,
                                    "end": 2744,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 36
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2728,
                                      "end": 2732,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 24
                                        }
                                      },
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2733,
                                      "end": 2744,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 25
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 36
                                        },
                                        "identifierName": "constraints"
                                      },
                                      "name": "constraints"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2745,
                                    "end": 2749,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 41
                                      },
                                      "identifierName": "some"
                                    },
                                    "name": "some"
                                  },
                                  "computed": false,
                                  "leadingComments": null
                                },
                                "arguments": [
                                  {
                                    "type": "ArrowFunctionExpression",
                                    "start": 2750,
                                    "end": 2791,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 83
                                      }
                                    },
                                    "id": null,
                                    "generator": false,
                                    "expression": true,
                                    "async": false,
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "start": 2750,
                                        "end": 2756,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 42
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 48
                                          },
                                          "identifierName": "constr"
                                        },
                                        "name": "constr"
                                      }
                                    ],
                                    "body": {
                                      "type": "CallExpression",
                                      "start": 2760,
                                      "end": 2791,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 83
                                        }
                                      },
                                      "callee": {
                                        "type": "Identifier",
                                        "start": 2760,
                                        "end": 2771,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 52
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 63
                                          },
                                          "identifierName": "isExcessive"
                                        },
                                        "name": "isExcessive"
                                      },
                                      "arguments": [
                                        {
                                          "type": "Identifier",
                                          "start": 2772,
                                          "end": 2782,
                                          "loc": {
                                            "start": {
                                              "line": 63,
                                              "column": 64
                                            },
                                            "end": {
                                              "line": 63,
                                              "column": 74
                                            },
                                            "identifierName": "geomParams"
                                          },
                                          "name": "geomParams"
                                        },
                                        {
                                          "type": "Identifier",
                                          "start": 2784,
                                          "end": 2790,
                                          "loc": {
                                            "start": {
                                              "line": 63,
                                              "column": 76
                                            },
                                            "end": {
                                              "line": 63,
                                              "column": 82
                                            },
                                            "identifierName": "constr"
                                          },
                                          "name": "constr"
                                        }
                                      ]
                                    }
                                  }
                                ],
                                "leadingComments": null
                              },
                              "consequent": {
                                "type": "ReturnStatement",
                                "start": 2814,
                                "end": 2821,
                                "loc": {
                                  "start": {
                                    "line": 64,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 64,
                                    "column": 27
                                  }
                                },
                                "argument": null
                              },
                              "alternate": null,
                              "leadingComments": [
                                {
                                  "type": "CommentLine",
                                  "value": " TODO: optimize this O(N) search",
                                  "start": 2673,
                                  "end": 2707,
                                  "loc": {
                                    "start": {
                                      "line": 62,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 62,
                                      "column": 50
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "ForOfStatement",
                              "start": 2838,
                              "end": 2978,
                              "loc": {
                                "start": {
                                  "line": 65,
                                  "column": 16
                                },
                                "end": {
                                  "line": 67,
                                  "column": 31
                                }
                              },
                              "left": {
                                "type": "VariableDeclaration",
                                "start": 2843,
                                "end": 2853,
                                "loc": {
                                  "start": {
                                    "line": 65,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 65,
                                    "column": 31
                                  }
                                },
                                "declarations": [
                                  {
                                    "type": "VariableDeclarator",
                                    "start": 2847,
                                    "end": 2853,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 25
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 31
                                      }
                                    },
                                    "id": {
                                      "type": "Identifier",
                                      "start": 2847,
                                      "end": 2853,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 25
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 31
                                        },
                                        "identifierName": "object"
                                      },
                                      "name": "object"
                                    },
                                    "init": null
                                  }
                                ],
                                "kind": "let"
                              },
                              "right": {
                                "type": "MemberExpression",
                                "start": 2857,
                                "end": 2877,
                                "loc": {
                                  "start": {
                                    "line": 65,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 65,
                                    "column": 55
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2857,
                                  "end": 2868,
                                  "loc": {
                                    "start": {
                                      "line": 65,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 65,
                                      "column": 46
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 2857,
                                    "end": 2861,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 39
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2862,
                                    "end": 2868,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 40
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 46
                                      },
                                      "identifierName": "sketch"
                                    },
                                    "name": "sketch"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2869,
                                  "end": 2877,
                                  "loc": {
                                    "start": {
                                      "line": 65,
                                      "column": 47
                                    },
                                    "end": {
                                      "line": 65,
                                      "column": 55
                                    },
                                    "identifierName": "children"
                                  },
                                  "name": "children"
                                },
                                "computed": false
                              },
                              "body": {
                                "type": "IfStatement",
                                "start": 2899,
                                "end": 2978,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 67,
                                    "column": 31
                                  }
                                },
                                "test": {
                                  "type": "CallExpression",
                                  "start": 2903,
                                  "end": 2945,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 24
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 66
                                    }
                                  },
                                  "callee": {
                                    "type": "Identifier",
                                    "start": 2903,
                                    "end": 2914,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 24
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 35
                                      },
                                      "identifierName": "isExcessive"
                                    },
                                    "name": "isExcessive"
                                  },
                                  "arguments": [
                                    {
                                      "type": "Identifier",
                                      "start": 2915,
                                      "end": 2925,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 46
                                        },
                                        "identifierName": "geomParams"
                                      },
                                      "name": "geomParams"
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 2927,
                                      "end": 2944,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 65
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2927,
                                        "end": 2933,
                                        "loc": {
                                          "start": {
                                            "line": 66,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 66,
                                            "column": 54
                                          },
                                          "identifierName": "object"
                                        },
                                        "name": "object"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2934,
                                        "end": 2944,
                                        "loc": {
                                          "start": {
                                            "line": 66,
                                            "column": 55
                                          },
                                          "end": {
                                            "line": 66,
                                            "column": 65
                                          },
                                          "identifierName": "geomParams"
                                        },
                                        "name": "geomParams"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "consequent": {
                                  "type": "ReturnStatement",
                                  "start": 2971,
                                  "end": 2978,
                                  "loc": {
                                    "start": {
                                      "line": 67,
                                      "column": 24
                                    },
                                    "end": {
                                      "line": 67,
                                      "column": 31
                                    }
                                  },
                                  "argument": null
                                },
                                "alternate": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2995,
                              "end": 3001,
                              "loc": {
                                "start": {
                                  "line": 68,
                                  "column": 16
                                },
                                "end": {
                                  "line": 68,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": null
                        }
                      ],
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " if a new constraint is not excessive, then take it into account",
                          "start": 1516,
                          "end": 1582,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 8
                            },
                            "end": {
                              "line": 38,
                              "column": 74
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3020,
                      "end": 3054,
                      "loc": {
                        "start": {
                          "line": 70,
                          "column": 8
                        },
                        "end": {
                          "line": 70,
                          "column": 42
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 3020,
                        "end": 3053,
                        "loc": {
                          "start": {
                            "line": 70,
                            "column": 8
                          },
                          "end": {
                            "line": 70,
                            "column": 41
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 3020,
                          "end": 3041,
                          "loc": {
                            "start": {
                              "line": 70,
                              "column": 8
                            },
                            "end": {
                              "line": 70,
                              "column": 29
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3020,
                            "end": 3036,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 8
                              },
                              "end": {
                                "line": 70,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 3020,
                              "end": 3024,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 8
                                },
                                "end": {
                                  "line": 70,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3025,
                              "end": 3036,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 13
                                },
                                "end": {
                                  "line": 70,
                                  "column": 24
                                },
                                "identifierName": "constraints"
                              },
                              "name": "constraints"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3037,
                            "end": 3041,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 25
                              },
                              "end": {
                                "line": 70,
                                "column": 29
                              },
                              "identifierName": "push"
                            },
                            "name": "push"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 3042,
                            "end": 3052,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 30
                              },
                              "end": {
                                "line": 70,
                                "column": 40
                              },
                              "identifierName": "geomParams"
                            },
                            "name": "geomParams"
                          }
                        ]
                      }
                    }
                  ],
                  "directives": [],
                  "trailingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " add a new constraint to the internal buffer (if it is not excessive)",
                    "start": 1284,
                    "end": 1355,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 4
                      },
                      "end": {
                        "line": 34,
                        "column": 75
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " return constraint statements in the internal buffer, clear the buffer",
                    "start": 3066,
                    "end": 3138,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 4
                      },
                      "end": {
                        "line": 73,
                        "column": 76
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassMethod",
                "start": 3143,
                "end": 3317,
                "loc": {
                  "start": {
                    "line": 74,
                    "column": 4
                  },
                  "end": {
                    "line": 78,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 3143,
                  "end": 3149,
                  "loc": {
                    "start": {
                      "line": 74,
                      "column": 4
                    },
                    "end": {
                      "line": 74,
                      "column": 10
                    },
                    "identifierName": "commit"
                  },
                  "name": "commit",
                  "leadingComments": null
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 3152,
                  "end": 3317,
                  "loc": {
                    "start": {
                      "line": 74,
                      "column": 13
                    },
                    "end": {
                      "line": 78,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 3162,
                      "end": 3253,
                      "loc": {
                        "start": {
                          "line": 75,
                          "column": 8
                        },
                        "end": {
                          "line": 75,
                          "column": 99
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 3168,
                          "end": 3252,
                          "loc": {
                            "start": {
                              "line": 75,
                              "column": 14
                            },
                            "end": {
                              "line": 75,
                              "column": 98
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 3168,
                            "end": 3178,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 14
                              },
                              "end": {
                                "line": 75,
                                "column": 24
                              },
                              "identifierName": "statements"
                            },
                            "name": "statements"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 3181,
                            "end": 3252,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 27
                              },
                              "end": {
                                "line": 75,
                                "column": 98
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 3181,
                              "end": 3201,
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 27
                                },
                                "end": {
                                  "line": 75,
                                  "column": 47
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3181,
                                "end": 3197,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 43
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 3181,
                                  "end": 3185,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 31
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3186,
                                  "end": 3197,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 32
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 43
                                    },
                                    "identifierName": "constraints"
                                  },
                                  "name": "constraints"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3198,
                                "end": 3201,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 47
                                  },
                                  "identifierName": "map"
                                },
                                "name": "map"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "ArrowFunctionExpression",
                                "start": 3202,
                                "end": 3251,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 48
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 97
                                  }
                                },
                                "id": null,
                                "generator": false,
                                "expression": true,
                                "async": false,
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "start": 3202,
                                    "end": 3212,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 48
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 58
                                      },
                                      "identifierName": "geomParams"
                                    },
                                    "name": "geomParams"
                                  }
                                ],
                                "body": {
                                  "type": "CallExpression",
                                  "start": 3216,
                                  "end": 3251,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 62
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 97
                                    }
                                  },
                                  "callee": {
                                    "type": "Identifier",
                                    "start": 3216,
                                    "end": 3226,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 62
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 72
                                      },
                                      "identifierName": "addCommand"
                                    },
                                    "name": "addCommand"
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 3227,
                                      "end": 3238,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 73
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 84
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 3227,
                                        "end": 3231,
                                        "loc": {
                                          "start": {
                                            "line": 75,
                                            "column": 73
                                          },
                                          "end": {
                                            "line": 75,
                                            "column": 77
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3232,
                                        "end": 3238,
                                        "loc": {
                                          "start": {
                                            "line": 75,
                                            "column": 78
                                          },
                                          "end": {
                                            "line": 75,
                                            "column": 84
                                          },
                                          "identifierName": "sketch"
                                        },
                                        "name": "sketch"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "Identifier",
                                      "start": 3240,
                                      "end": 3250,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 86
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 96
                                        },
                                        "identifierName": "geomParams"
                                      },
                                      "name": "geomParams"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3262,
                      "end": 3284,
                      "loc": {
                        "start": {
                          "line": 76,
                          "column": 8
                        },
                        "end": {
                          "line": 76,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 3262,
                        "end": 3283,
                        "loc": {
                          "start": {
                            "line": 76,
                            "column": 8
                          },
                          "end": {
                            "line": 76,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 3262,
                          "end": 3278,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 8
                            },
                            "end": {
                              "line": 76,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 3262,
                            "end": 3266,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 8
                              },
                              "end": {
                                "line": 76,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3267,
                            "end": 3278,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 13
                              },
                              "end": {
                                "line": 76,
                                "column": 24
                              },
                              "identifierName": "constraints"
                            },
                            "name": "constraints"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 3281,
                          "end": 3283,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 27
                            },
                            "end": {
                              "line": 76,
                              "column": 29
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 3293,
                      "end": 3311,
                      "loc": {
                        "start": {
                          "line": 77,
                          "column": 8
                        },
                        "end": {
                          "line": 77,
                          "column": 26
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 3300,
                        "end": 3310,
                        "loc": {
                          "start": {
                            "line": 77,
                            "column": 15
                          },
                          "end": {
                            "line": 77,
                            "column": 25
                          },
                          "identifierName": "statements"
                        },
                        "name": "statements"
                      }
                    }
                  ],
                  "directives": []
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " return constraint statements in the internal buffer, clear the buffer",
                    "start": 3066,
                    "end": 3138,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 4
                      },
                      "end": {
                        "line": 73,
                        "column": 76
                      }
                    }
                  }
                ]
              }
            ]
          },
          "leadingComments": [],
          "trailingComments": []
        }
      },
      {
        "type": "FunctionDeclaration",
        "start": 3321,
        "end": 3998,
        "loc": {
          "start": {
            "line": 81,
            "column": 0
          },
          "end": {
            "line": 94,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 3330,
          "end": 3341,
          "loc": {
            "start": {
              "line": 81,
              "column": 9
            },
            "end": {
              "line": 81,
              "column": 20
            },
            "identifierName": "isExcessive"
          },
          "name": "isExcessive"
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 3342,
            "end": 3349,
            "loc": {
              "start": {
                "line": 81,
                "column": 21
              },
              "end": {
                "line": 81,
                "column": 28
              },
              "identifierName": "constr0"
            },
            "name": "constr0"
          },
          {
            "type": "Identifier",
            "start": 3351,
            "end": 3358,
            "loc": {
              "start": {
                "line": 81,
                "column": 30
              },
              "end": {
                "line": 81,
                "column": 37
              },
              "identifierName": "constr1"
            },
            "name": "constr1"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 3360,
          "end": 3998,
          "loc": {
            "start": {
              "line": 81,
              "column": 39
            },
            "end": {
              "line": 94,
              "column": 1
            }
          },
          "body": [
            {
              "type": "IfStatement",
              "start": 3366,
              "end": 3424,
              "loc": {
                "start": {
                  "line": 82,
                  "column": 4
                },
                "end": {
                  "line": 83,
                  "column": 21
                }
              },
              "test": {
                "type": "BinaryExpression",
                "start": 3370,
                "end": 3401,
                "loc": {
                  "start": {
                    "line": 82,
                    "column": 8
                  },
                  "end": {
                    "line": 82,
                    "column": 39
                  }
                },
                "left": {
                  "type": "MemberExpression",
                  "start": 3370,
                  "end": 3383,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 8
                    },
                    "end": {
                      "line": 82,
                      "column": 21
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3370,
                    "end": 3377,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 8
                      },
                      "end": {
                        "line": 82,
                        "column": 15
                      },
                      "identifierName": "constr0"
                    },
                    "name": "constr0"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3378,
                    "end": 3383,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 16
                      },
                      "end": {
                        "line": 82,
                        "column": 21
                      },
                      "identifierName": "class"
                    },
                    "name": "class"
                  },
                  "computed": false
                },
                "operator": "!==",
                "right": {
                  "type": "MemberExpression",
                  "start": 3388,
                  "end": 3401,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 26
                    },
                    "end": {
                      "line": 82,
                      "column": 39
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3388,
                    "end": 3395,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 26
                      },
                      "end": {
                        "line": 82,
                        "column": 33
                      },
                      "identifierName": "constr1"
                    },
                    "name": "constr1"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3396,
                    "end": 3401,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 34
                      },
                      "end": {
                        "line": 82,
                        "column": 39
                      },
                      "identifierName": "class"
                    },
                    "name": "class"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3411,
                "end": 3424,
                "loc": {
                  "start": {
                    "line": 83,
                    "column": 8
                  },
                  "end": {
                    "line": 83,
                    "column": 21
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3418,
                  "end": 3423,
                  "loc": {
                    "start": {
                      "line": 83,
                      "column": 15
                    },
                    "end": {
                      "line": 83,
                      "column": 20
                    }
                  },
                  "value": false
                }
              },
              "alternate": null
            },
            {
              "type": "IfStatement",
              "start": 3429,
              "end": 3507,
              "loc": {
                "start": {
                  "line": 84,
                  "column": 4
                },
                "end": {
                  "line": 85,
                  "column": 21
                }
              },
              "test": {
                "type": "BinaryExpression",
                "start": 3433,
                "end": 3484,
                "loc": {
                  "start": {
                    "line": 84,
                    "column": 8
                  },
                  "end": {
                    "line": 84,
                    "column": 59
                  }
                },
                "left": {
                  "type": "MemberExpression",
                  "start": 3433,
                  "end": 3456,
                  "loc": {
                    "start": {
                      "line": 84,
                      "column": 8
                    },
                    "end": {
                      "line": 84,
                      "column": 31
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3433,
                    "end": 3449,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 8
                      },
                      "end": {
                        "line": 84,
                        "column": 24
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3433,
                      "end": 3440,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 8
                        },
                        "end": {
                          "line": 84,
                          "column": 15
                        },
                        "identifierName": "constr0"
                      },
                      "name": "constr0"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3441,
                      "end": 3449,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 16
                        },
                        "end": {
                          "line": 84,
                          "column": 24
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3450,
                    "end": 3456,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 25
                      },
                      "end": {
                        "line": 84,
                        "column": 31
                      },
                      "identifierName": "length"
                    },
                    "name": "length"
                  },
                  "computed": false
                },
                "operator": "!==",
                "right": {
                  "type": "MemberExpression",
                  "start": 3461,
                  "end": 3484,
                  "loc": {
                    "start": {
                      "line": 84,
                      "column": 36
                    },
                    "end": {
                      "line": 84,
                      "column": 59
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3461,
                    "end": 3477,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 36
                      },
                      "end": {
                        "line": 84,
                        "column": 52
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3461,
                      "end": 3468,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 36
                        },
                        "end": {
                          "line": 84,
                          "column": 43
                        },
                        "identifierName": "constr1"
                      },
                      "name": "constr1"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3469,
                      "end": 3477,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 44
                        },
                        "end": {
                          "line": 84,
                          "column": 52
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3478,
                    "end": 3484,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 53
                      },
                      "end": {
                        "line": 84,
                        "column": 59
                      },
                      "identifierName": "length"
                    },
                    "name": "length"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3494,
                "end": 3507,
                "loc": {
                  "start": {
                    "line": 85,
                    "column": 8
                  },
                  "end": {
                    "line": 85,
                    "column": 21
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3501,
                  "end": 3506,
                  "loc": {
                    "start": {
                      "line": 85,
                      "column": 15
                    },
                    "end": {
                      "line": 85,
                      "column": 20
                    }
                  },
                  "value": false
                }
              },
              "alternate": null
            },
            {
              "type": "IfStatement",
              "start": 3512,
              "end": 3637,
              "loc": {
                "start": {
                  "line": 86,
                  "column": 4
                },
                "end": {
                  "line": 87,
                  "column": 21
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 3516,
                "end": 3614,
                "loc": {
                  "start": {
                    "line": 86,
                    "column": 8
                  },
                  "end": {
                    "line": 86,
                    "column": 106
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 3516,
                  "end": 3586,
                  "loc": {
                    "start": {
                      "line": 86,
                      "column": 8
                    },
                    "end": {
                      "line": 86,
                      "column": 78
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 3516,
                    "end": 3558,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 8
                      },
                      "end": {
                        "line": 86,
                        "column": 50
                      }
                    },
                    "left": {
                      "type": "MemberExpression",
                      "start": 3516,
                      "end": 3535,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 8
                        },
                        "end": {
                          "line": 86,
                          "column": 27
                        }
                      },
                      "object": {
                        "type": "MemberExpression",
                        "start": 3516,
                        "end": 3529,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 8
                          },
                          "end": {
                            "line": 86,
                            "column": 21
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3516,
                          "end": 3523,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 8
                            },
                            "end": {
                              "line": 86,
                              "column": 15
                            },
                            "identifierName": "constr0"
                          },
                          "name": "constr0"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3524,
                          "end": 3529,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 16
                            },
                            "end": {
                              "line": 86,
                              "column": 21
                            },
                            "identifierName": "value"
                          },
                          "name": "value"
                        },
                        "computed": false
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3530,
                        "end": 3535,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 22
                          },
                          "end": {
                            "line": 86,
                            "column": 27
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    },
                    "operator": "||",
                    "right": {
                      "type": "MemberExpression",
                      "start": 3539,
                      "end": 3558,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 31
                        },
                        "end": {
                          "line": 86,
                          "column": 50
                        }
                      },
                      "object": {
                        "type": "MemberExpression",
                        "start": 3539,
                        "end": 3552,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 31
                          },
                          "end": {
                            "line": 86,
                            "column": 44
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3539,
                          "end": 3546,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 31
                            },
                            "end": {
                              "line": 86,
                              "column": 38
                            },
                            "identifierName": "constr1"
                          },
                          "name": "constr1"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3547,
                          "end": 3552,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 39
                            },
                            "end": {
                              "line": 86,
                              "column": 44
                            },
                            "identifierName": "value"
                          },
                          "name": "value"
                        },
                        "computed": false
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3553,
                        "end": 3558,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 45
                          },
                          "end": {
                            "line": 86,
                            "column": 50
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    }
                  },
                  "operator": "||",
                  "right": {
                    "type": "MemberExpression",
                    "start": 3562,
                    "end": 3586,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 54
                      },
                      "end": {
                        "line": 86,
                        "column": 78
                      }
                    },
                    "object": {
                      "type": "MemberExpression",
                      "start": 3562,
                      "end": 3575,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 54
                        },
                        "end": {
                          "line": 86,
                          "column": 67
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3562,
                        "end": 3569,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 54
                          },
                          "end": {
                            "line": 86,
                            "column": 61
                          },
                          "identifierName": "constr0"
                        },
                        "name": "constr0"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3570,
                        "end": 3575,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 62
                          },
                          "end": {
                            "line": 86,
                            "column": 67
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3576,
                      "end": 3586,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 68
                        },
                        "end": {
                          "line": 86,
                          "column": 78
                        },
                        "identifierName": "expression"
                      },
                      "name": "expression"
                    },
                    "computed": false
                  }
                },
                "operator": "||",
                "right": {
                  "type": "MemberExpression",
                  "start": 3590,
                  "end": 3614,
                  "loc": {
                    "start": {
                      "line": 86,
                      "column": 82
                    },
                    "end": {
                      "line": 86,
                      "column": 106
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3590,
                    "end": 3603,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 82
                      },
                      "end": {
                        "line": 86,
                        "column": 95
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3590,
                      "end": 3597,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 82
                        },
                        "end": {
                          "line": 86,
                          "column": 89
                        },
                        "identifierName": "constr1"
                      },
                      "name": "constr1"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3598,
                      "end": 3603,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 90
                        },
                        "end": {
                          "line": 86,
                          "column": 95
                        },
                        "identifierName": "value"
                      },
                      "name": "value"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3604,
                    "end": 3614,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 96
                      },
                      "end": {
                        "line": 86,
                        "column": 106
                      },
                      "identifierName": "expression"
                    },
                    "name": "expression"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3624,
                "end": 3637,
                "loc": {
                  "start": {
                    "line": 87,
                    "column": 8
                  },
                  "end": {
                    "line": 87,
                    "column": 21
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3631,
                  "end": 3636,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 15
                    },
                    "end": {
                      "line": 87,
                      "column": 20
                    }
                  },
                  "value": false
                },
                "trailingComments": null
              },
              "alternate": null,
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " ignore parametric constraints",
                  "start": 3638,
                  "end": 3670,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 22
                    },
                    "end": {
                      "line": 87,
                      "column": 54
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 3675,
              "end": 3774,
              "loc": {
                "start": {
                  "line": 88,
                  "column": 4
                },
                "end": {
                  "line": 89,
                  "column": 20
                }
              },
              "test": {
                "type": "CallExpression",
                "start": 3679,
                "end": 3752,
                "loc": {
                  "start": {
                    "line": 88,
                    "column": 8
                  },
                  "end": {
                    "line": 88,
                    "column": 81
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 3679,
                  "end": 3701,
                  "loc": {
                    "start": {
                      "line": 88,
                      "column": 8
                    },
                    "end": {
                      "line": 88,
                      "column": 30
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3679,
                    "end": 3695,
                    "loc": {
                      "start": {
                        "line": 88,
                        "column": 8
                      },
                      "end": {
                        "line": 88,
                        "column": 24
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3679,
                      "end": 3686,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 8
                        },
                        "end": {
                          "line": 88,
                          "column": 15
                        },
                        "identifierName": "constr0"
                      },
                      "name": "constr0",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3687,
                      "end": 3695,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 16
                        },
                        "end": {
                          "line": 88,
                          "column": 24
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3696,
                    "end": 3701,
                    "loc": {
                      "start": {
                        "line": 88,
                        "column": 25
                      },
                      "end": {
                        "line": 88,
                        "column": 30
                      },
                      "identifierName": "every"
                    },
                    "name": "every"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "ArrowFunctionExpression",
                    "start": 3702,
                    "end": 3751,
                    "loc": {
                      "start": {
                        "line": 88,
                        "column": 31
                      },
                      "end": {
                        "line": 88,
                        "column": 80
                      }
                    },
                    "id": null,
                    "generator": false,
                    "expression": true,
                    "async": false,
                    "params": [
                      {
                        "type": "Identifier",
                        "start": 3703,
                        "end": 3706,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 32
                          },
                          "end": {
                            "line": 88,
                            "column": 35
                          },
                          "identifierName": "obj"
                        },
                        "name": "obj"
                      },
                      {
                        "type": "Identifier",
                        "start": 3708,
                        "end": 3711,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 37
                          },
                          "end": {
                            "line": 88,
                            "column": 40
                          },
                          "identifierName": "idx"
                        },
                        "name": "idx"
                      }
                    ],
                    "body": {
                      "type": "BinaryExpression",
                      "start": 3716,
                      "end": 3751,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 45
                        },
                        "end": {
                          "line": 88,
                          "column": 80
                        }
                      },
                      "left": {
                        "type": "MemberExpression",
                        "start": 3716,
                        "end": 3722,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 45
                          },
                          "end": {
                            "line": 88,
                            "column": 51
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3716,
                          "end": 3719,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 45
                            },
                            "end": {
                              "line": 88,
                              "column": 48
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3720,
                          "end": 3722,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 49
                            },
                            "end": {
                              "line": 88,
                              "column": 51
                            },
                            "identifierName": "id"
                          },
                          "name": "id"
                        },
                        "computed": false
                      },
                      "operator": "===",
                      "right": {
                        "type": "MemberExpression",
                        "start": 3727,
                        "end": 3751,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 56
                          },
                          "end": {
                            "line": 88,
                            "column": 80
                          }
                        },
                        "object": {
                          "type": "MemberExpression",
                          "start": 3727,
                          "end": 3748,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 56
                            },
                            "end": {
                              "line": 88,
                              "column": 77
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3727,
                            "end": 3743,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 56
                              },
                              "end": {
                                "line": 88,
                                "column": 72
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 3727,
                              "end": 3734,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 56
                                },
                                "end": {
                                  "line": 88,
                                  "column": 63
                                },
                                "identifierName": "constr1"
                              },
                              "name": "constr1"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3735,
                              "end": 3743,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 64
                                },
                                "end": {
                                  "line": 88,
                                  "column": 72
                                },
                                "identifierName": "entities"
                              },
                              "name": "entities"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3744,
                            "end": 3747,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 73
                              },
                              "end": {
                                "line": 88,
                                "column": 76
                              },
                              "identifierName": "idx"
                            },
                            "name": "idx"
                          },
                          "computed": true
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3749,
                          "end": 3751,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 78
                            },
                            "end": {
                              "line": 88,
                              "column": 80
                            },
                            "identifierName": "id"
                          },
                          "name": "id"
                        },
                        "computed": false
                      }
                    }
                  }
                ],
                "leadingComments": null
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3762,
                "end": 3774,
                "loc": {
                  "start": {
                    "line": 89,
                    "column": 8
                  },
                  "end": {
                    "line": 89,
                    "column": 20
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3769,
                  "end": 3773,
                  "loc": {
                    "start": {
                      "line": 89,
                      "column": 15
                    },
                    "end": {
                      "line": 89,
                      "column": 19
                    }
                  },
                  "value": true
                }
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " ignore parametric constraints",
                  "start": 3638,
                  "end": 3670,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 22
                    },
                    "end": {
                      "line": 87,
                      "column": 54
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3779,
              "end": 3847,
              "loc": {
                "start": {
                  "line": 90,
                  "column": 4
                },
                "end": {
                  "line": 90,
                  "column": 72
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3785,
                  "end": 3846,
                  "loc": {
                    "start": {
                      "line": 90,
                      "column": 10
                    },
                    "end": {
                      "line": 90,
                      "column": 71
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3785,
                    "end": 3804,
                    "loc": {
                      "start": {
                        "line": 90,
                        "column": 10
                      },
                      "end": {
                        "line": 90,
                        "column": 29
                      },
                      "identifierName": "isBinaryCommutative"
                    },
                    "name": "isBinaryCommutative"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 3807,
                    "end": 3846,
                    "loc": {
                      "start": {
                        "line": 90,
                        "column": 32
                      },
                      "end": {
                        "line": 90,
                        "column": 71
                      }
                    },
                    "object": {
                      "type": "CallExpression",
                      "start": 3807,
                      "end": 3832,
                      "loc": {
                        "start": {
                          "line": 90,
                          "column": 32
                        },
                        "end": {
                          "line": 90,
                          "column": 57
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 3807,
                        "end": 3817,
                        "loc": {
                          "start": {
                            "line": 90,
                            "column": 32
                          },
                          "end": {
                            "line": 90,
                            "column": 42
                          },
                          "identifierName": "Constraint"
                        },
                        "name": "Constraint"
                      },
                      "arguments": [
                        {
                          "type": "MemberExpression",
                          "start": 3818,
                          "end": 3831,
                          "loc": {
                            "start": {
                              "line": 90,
                              "column": 43
                            },
                            "end": {
                              "line": 90,
                              "column": 56
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3818,
                            "end": 3825,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 43
                              },
                              "end": {
                                "line": 90,
                                "column": 50
                              },
                              "identifierName": "constr0"
                            },
                            "name": "constr0"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3826,
                            "end": 3831,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 51
                              },
                              "end": {
                                "line": 90,
                                "column": 56
                              },
                              "identifierName": "class"
                            },
                            "name": "class"
                          },
                          "computed": false
                        }
                      ]
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3833,
                      "end": 3846,
                      "loc": {
                        "start": {
                          "line": 90,
                          "column": 58
                        },
                        "end": {
                          "line": 90,
                          "column": 71
                        },
                        "identifierName": "isCommutative"
                      },
                      "name": "isCommutative"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "const"
            },
            {
              "type": "IfStatement",
              "start": 3852,
              "end": 3978,
              "loc": {
                "start": {
                  "line": 91,
                  "column": 4
                },
                "end": {
                  "line": 92,
                  "column": 20
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 3856,
                "end": 3956,
                "loc": {
                  "start": {
                    "line": 91,
                    "column": 8
                  },
                  "end": {
                    "line": 91,
                    "column": 108
                  }
                },
                "left": {
                  "type": "Identifier",
                  "start": 3856,
                  "end": 3875,
                  "loc": {
                    "start": {
                      "line": 91,
                      "column": 8
                    },
                    "end": {
                      "line": 91,
                      "column": 27
                    },
                    "identifierName": "isBinaryCommutative"
                  },
                  "name": "isBinaryCommutative"
                },
                "operator": "&&",
                "right": {
                  "type": "CallExpression",
                  "start": 3879,
                  "end": 3956,
                  "loc": {
                    "start": {
                      "line": 91,
                      "column": 31
                    },
                    "end": {
                      "line": 91,
                      "column": 108
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 3879,
                    "end": 3901,
                    "loc": {
                      "start": {
                        "line": 91,
                        "column": 31
                      },
                      "end": {
                        "line": 91,
                        "column": 53
                      }
                    },
                    "object": {
                      "type": "MemberExpression",
                      "start": 3879,
                      "end": 3895,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 31
                        },
                        "end": {
                          "line": 91,
                          "column": 47
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3879,
                        "end": 3886,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 31
                          },
                          "end": {
                            "line": 91,
                            "column": 38
                          },
                          "identifierName": "constr0"
                        },
                        "name": "constr0"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3887,
                        "end": 3895,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 39
                          },
                          "end": {
                            "line": 91,
                            "column": 47
                          },
                          "identifierName": "entities"
                        },
                        "name": "entities"
                      },
                      "computed": false
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3896,
                      "end": 3901,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 48
                        },
                        "end": {
                          "line": 91,
                          "column": 53
                        },
                        "identifierName": "every"
                      },
                      "name": "every"
                    },
                    "computed": false
                  },
                  "arguments": [
                    {
                      "type": "ArrowFunctionExpression",
                      "start": 3902,
                      "end": 3955,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 54
                        },
                        "end": {
                          "line": 91,
                          "column": 107
                        }
                      },
                      "id": null,
                      "generator": false,
                      "expression": true,
                      "async": false,
                      "params": [
                        {
                          "type": "Identifier",
                          "start": 3903,
                          "end": 3906,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 55
                            },
                            "end": {
                              "line": 91,
                              "column": 58
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        },
                        {
                          "type": "Identifier",
                          "start": 3908,
                          "end": 3911,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 60
                            },
                            "end": {
                              "line": 91,
                              "column": 63
                            },
                            "identifierName": "idx"
                          },
                          "name": "idx"
                        }
                      ],
                      "body": {
                        "type": "BinaryExpression",
                        "start": 3916,
                        "end": 3955,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 68
                          },
                          "end": {
                            "line": 91,
                            "column": 107
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 3916,
                          "end": 3922,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 68
                            },
                            "end": {
                              "line": 91,
                              "column": 74
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3916,
                            "end": 3919,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 68
                              },
                              "end": {
                                "line": 91,
                                "column": 71
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3920,
                            "end": 3922,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 72
                              },
                              "end": {
                                "line": 91,
                                "column": 74
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "computed": false
                        },
                        "operator": "===",
                        "right": {
                          "type": "MemberExpression",
                          "start": 3927,
                          "end": 3955,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 79
                            },
                            "end": {
                              "line": 91,
                              "column": 107
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3927,
                            "end": 3952,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 79
                              },
                              "end": {
                                "line": 91,
                                "column": 104
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3927,
                              "end": 3943,
                              "loc": {
                                "start": {
                                  "line": 91,
                                  "column": 79
                                },
                                "end": {
                                  "line": 91,
                                  "column": 95
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 3927,
                                "end": 3934,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 79
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 86
                                  },
                                  "identifierName": "constr1"
                                },
                                "name": "constr1"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3935,
                                "end": 3943,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 87
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 95
                                  },
                                  "identifierName": "entities"
                                },
                                "name": "entities"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "BinaryExpression",
                              "start": 3944,
                              "end": 3951,
                              "loc": {
                                "start": {
                                  "line": 91,
                                  "column": 96
                                },
                                "end": {
                                  "line": 91,
                                  "column": 103
                                }
                              },
                              "left": {
                                "type": "NumericLiteral",
                                "start": 3944,
                                "end": 3945,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 96
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 97
                                  }
                                },
                                "extra": {
                                  "rawValue": 1,
                                  "raw": "1"
                                },
                                "value": 1
                              },
                              "operator": "-",
                              "right": {
                                "type": "Identifier",
                                "start": 3948,
                                "end": 3951,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 100
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 103
                                  },
                                  "identifierName": "idx"
                                },
                                "name": "idx"
                              }
                            },
                            "computed": true
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3953,
                            "end": 3955,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 105
                              },
                              "end": {
                                "line": 91,
                                "column": 107
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "computed": false
                        }
                      }
                    }
                  ]
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3966,
                "end": 3978,
                "loc": {
                  "start": {
                    "line": 92,
                    "column": 8
                  },
                  "end": {
                    "line": 92,
                    "column": 20
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3973,
                  "end": 3977,
                  "loc": {
                    "start": {
                      "line": 92,
                      "column": 15
                    },
                    "end": {
                      "line": 92,
                      "column": 19
                    }
                  },
                  "value": true
                }
              },
              "alternate": null
            },
            {
              "type": "ReturnStatement",
              "start": 3983,
              "end": 3996,
              "loc": {
                "start": {
                  "line": 93,
                  "column": 4
                },
                "end": {
                  "line": 93,
                  "column": 17
                }
              },
              "argument": {
                "type": "BooleanLiteral",
                "start": 3990,
                "end": 3995,
                "loc": {
                  "start": {
                    "line": 93,
                    "column": 11
                  },
                  "end": {
                    "line": 93,
                    "column": 16
                  }
                },
                "value": false
              }
            }
          ],
          "directives": [],
          "trailingComments": null
        },
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " Disjoint Set Union",
            "start": 4000,
            "end": 4021,
            "loc": {
              "start": {
                "line": 96,
                "column": 0
              },
              "end": {
                "line": 96,
                "column": 21
              }
            }
          }
        ]
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 4022,
        "end": 4895,
        "loc": {
          "start": {
            "line": 97,
            "column": 0
          },
          "end": {
            "line": 135,
            "column": 1
          }
        },
        "specifiers": [],
        "source": null,
        "declaration": {
          "type": "ClassDeclaration",
          "start": 4029,
          "end": 4895,
          "loc": {
            "start": {
              "line": 97,
              "column": 7
            },
            "end": {
              "line": 135,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 4035,
            "end": 4038,
            "loc": {
              "start": {
                "line": 97,
                "column": 13
              },
              "end": {
                "line": 97,
                "column": 16
              },
              "identifierName": "DSU"
            },
            "name": "DSU",
            "leadingComments": null
          },
          "superClass": null,
          "body": {
            "type": "ClassBody",
            "start": 4039,
            "end": 4895,
            "loc": {
              "start": {
                "line": 97,
                "column": 17
              },
              "end": {
                "line": 135,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassMethod",
                "start": 4045,
                "end": 4100,
                "loc": {
                  "start": {
                    "line": 98,
                    "column": 4
                  },
                  "end": {
                    "line": 100,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4045,
                  "end": 4056,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 4
                    },
                    "end": {
                      "line": 98,
                      "column": 15
                    },
                    "identifierName": "constructor"
                  },
                  "name": "constructor"
                },
                "static": false,
                "kind": "constructor",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 4059,
                  "end": 4100,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 18
                    },
                    "end": {
                      "line": 100,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4069,
                      "end": 4094,
                      "loc": {
                        "start": {
                          "line": 99,
                          "column": 8
                        },
                        "end": {
                          "line": 99,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4069,
                        "end": 4093,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 8
                          },
                          "end": {
                            "line": 99,
                            "column": 32
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 4069,
                          "end": 4081,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 8
                            },
                            "end": {
                              "line": 99,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4069,
                            "end": 4073,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 8
                              },
                              "end": {
                                "line": 99,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4074,
                            "end": 4081,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 13
                              },
                              "end": {
                                "line": 99,
                                "column": 20
                              },
                              "identifierName": "parents"
                            },
                            "name": "parents"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 4084,
                          "end": 4093,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 23
                            },
                            "end": {
                              "line": 99,
                              "column": 32
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 4088,
                            "end": 4091,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 27
                              },
                              "end": {
                                "line": 99,
                                "column": 30
                              },
                              "identifierName": "Map"
                            },
                            "name": "Map"
                          },
                          "arguments": []
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4106,
                "end": 4196,
                "loc": {
                  "start": {
                    "line": 102,
                    "column": 4
                  },
                  "end": {
                    "line": 104,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4106,
                  "end": 4115,
                  "loc": {
                    "start": {
                      "line": 102,
                      "column": 4
                    },
                    "end": {
                      "line": 102,
                      "column": 13
                    },
                    "identifierName": "getParent"
                  },
                  "name": "getParent"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4116,
                    "end": 4119,
                    "loc": {
                      "start": {
                        "line": 102,
                        "column": 14
                      },
                      "end": {
                        "line": 102,
                        "column": 17
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4121,
                  "end": 4196,
                  "loc": {
                    "start": {
                      "line": 102,
                      "column": 19
                    },
                    "end": {
                      "line": 104,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 4131,
                      "end": 4190,
                      "loc": {
                        "start": {
                          "line": 103,
                          "column": 8
                        },
                        "end": {
                          "line": 103,
                          "column": 67
                        }
                      },
                      "argument": {
                        "type": "ConditionalExpression",
                        "start": 4138,
                        "end": 4189,
                        "loc": {
                          "start": {
                            "line": 103,
                            "column": 15
                          },
                          "end": {
                            "line": 103,
                            "column": 66
                          }
                        },
                        "test": {
                          "type": "CallExpression",
                          "start": 4138,
                          "end": 4159,
                          "loc": {
                            "start": {
                              "line": 103,
                              "column": 15
                            },
                            "end": {
                              "line": 103,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4138,
                            "end": 4154,
                            "loc": {
                              "start": {
                                "line": 103,
                                "column": 15
                              },
                              "end": {
                                "line": 103,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4138,
                              "end": 4150,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 15
                                },
                                "end": {
                                  "line": 103,
                                  "column": 27
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4138,
                                "end": 4142,
                                "loc": {
                                  "start": {
                                    "line": 103,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 103,
                                    "column": 19
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4143,
                                "end": 4150,
                                "loc": {
                                  "start": {
                                    "line": 103,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 103,
                                    "column": 27
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4151,
                              "end": 4154,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 28
                                },
                                "end": {
                                  "line": 103,
                                  "column": 31
                                },
                                "identifierName": "has"
                              },
                              "name": "has"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4155,
                              "end": 4158,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 32
                                },
                                "end": {
                                  "line": 103,
                                  "column": 35
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "consequent": {
                          "type": "CallExpression",
                          "start": 4162,
                          "end": 4183,
                          "loc": {
                            "start": {
                              "line": 103,
                              "column": 39
                            },
                            "end": {
                              "line": 103,
                              "column": 60
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4162,
                            "end": 4178,
                            "loc": {
                              "start": {
                                "line": 103,
                                "column": 39
                              },
                              "end": {
                                "line": 103,
                                "column": 55
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4162,
                              "end": 4174,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 39
                                },
                                "end": {
                                  "line": 103,
                                  "column": 51
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4162,
                                "end": 4166,
                                "loc": {
                                  "start": {
                                    "line": 103,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 103,
                                    "column": 43
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4167,
                                "end": 4174,
                                "loc": {
                                  "start": {
                                    "line": 103,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 103,
                                    "column": 51
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4175,
                              "end": 4178,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 52
                                },
                                "end": {
                                  "line": 103,
                                  "column": 55
                                },
                                "identifierName": "get"
                              },
                              "name": "get"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4179,
                              "end": 4182,
                              "loc": {
                                "start": {
                                  "line": 103,
                                  "column": 56
                                },
                                "end": {
                                  "line": 103,
                                  "column": 59
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "alternate": {
                          "type": "Identifier",
                          "start": 4186,
                          "end": 4189,
                          "loc": {
                            "start": {
                              "line": 103,
                              "column": 63
                            },
                            "end": {
                              "line": 103,
                              "column": 66
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4202,
                "end": 4265,
                "loc": {
                  "start": {
                    "line": 106,
                    "column": 4
                  },
                  "end": {
                    "line": 108,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4202,
                  "end": 4211,
                  "loc": {
                    "start": {
                      "line": 106,
                      "column": 4
                    },
                    "end": {
                      "line": 106,
                      "column": 13
                    },
                    "identifierName": "setParent"
                  },
                  "name": "setParent"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4212,
                    "end": 4215,
                    "loc": {
                      "start": {
                        "line": 106,
                        "column": 14
                      },
                      "end": {
                        "line": 106,
                        "column": 17
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  },
                  {
                    "type": "Identifier",
                    "start": 4217,
                    "end": 4220,
                    "loc": {
                      "start": {
                        "line": 106,
                        "column": 19
                      },
                      "end": {
                        "line": 106,
                        "column": 22
                      },
                      "identifierName": "par"
                    },
                    "name": "par"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4222,
                  "end": 4265,
                  "loc": {
                    "start": {
                      "line": 106,
                      "column": 24
                    },
                    "end": {
                      "line": 108,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4232,
                      "end": 4259,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 8
                        },
                        "end": {
                          "line": 107,
                          "column": 35
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4232,
                        "end": 4258,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 8
                          },
                          "end": {
                            "line": 107,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4232,
                          "end": 4248,
                          "loc": {
                            "start": {
                              "line": 107,
                              "column": 8
                            },
                            "end": {
                              "line": 107,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 4232,
                            "end": 4244,
                            "loc": {
                              "start": {
                                "line": 107,
                                "column": 8
                              },
                              "end": {
                                "line": 107,
                                "column": 20
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4232,
                              "end": 4236,
                              "loc": {
                                "start": {
                                  "line": 107,
                                  "column": 8
                                },
                                "end": {
                                  "line": 107,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4237,
                              "end": 4244,
                              "loc": {
                                "start": {
                                  "line": 107,
                                  "column": 13
                                },
                                "end": {
                                  "line": 107,
                                  "column": 20
                                },
                                "identifierName": "parents"
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4245,
                            "end": 4248,
                            "loc": {
                              "start": {
                                "line": 107,
                                "column": 21
                              },
                              "end": {
                                "line": 107,
                                "column": 24
                              },
                              "identifierName": "set"
                            },
                            "name": "set"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4249,
                            "end": 4252,
                            "loc": {
                              "start": {
                                "line": 107,
                                "column": 25
                              },
                              "end": {
                                "line": 107,
                                "column": 28
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 4254,
                            "end": 4257,
                            "loc": {
                              "start": {
                                "line": 107,
                                "column": 30
                              },
                              "end": {
                                "line": 107,
                                "column": 33
                              },
                              "identifierName": "par"
                            },
                            "name": "par"
                          }
                        ]
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4271,
                "end": 4365,
                "loc": {
                  "start": {
                    "line": 110,
                    "column": 4
                  },
                  "end": {
                    "line": 113,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4271,
                  "end": 4276,
                  "loc": {
                    "start": {
                      "line": 110,
                      "column": 4
                    },
                    "end": {
                      "line": 110,
                      "column": 9
                    },
                    "identifierName": "touch"
                  },
                  "name": "touch"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4277,
                    "end": 4280,
                    "loc": {
                      "start": {
                        "line": 110,
                        "column": 10
                      },
                      "end": {
                        "line": 110,
                        "column": 13
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4282,
                  "end": 4365,
                  "loc": {
                    "start": {
                      "line": 110,
                      "column": 15
                    },
                    "end": {
                      "line": 113,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 4292,
                      "end": 4359,
                      "loc": {
                        "start": {
                          "line": 111,
                          "column": 8
                        },
                        "end": {
                          "line": 112,
                          "column": 39
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 4296,
                        "end": 4318,
                        "loc": {
                          "start": {
                            "line": 111,
                            "column": 12
                          },
                          "end": {
                            "line": 111,
                            "column": 34
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "CallExpression",
                          "start": 4297,
                          "end": 4318,
                          "loc": {
                            "start": {
                              "line": 111,
                              "column": 13
                            },
                            "end": {
                              "line": 111,
                              "column": 34
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4297,
                            "end": 4313,
                            "loc": {
                              "start": {
                                "line": 111,
                                "column": 13
                              },
                              "end": {
                                "line": 111,
                                "column": 29
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4297,
                              "end": 4309,
                              "loc": {
                                "start": {
                                  "line": 111,
                                  "column": 13
                                },
                                "end": {
                                  "line": 111,
                                  "column": 25
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4297,
                                "end": 4301,
                                "loc": {
                                  "start": {
                                    "line": 111,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 111,
                                    "column": 17
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4302,
                                "end": 4309,
                                "loc": {
                                  "start": {
                                    "line": 111,
                                    "column": 18
                                  },
                                  "end": {
                                    "line": 111,
                                    "column": 25
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4310,
                              "end": 4313,
                              "loc": {
                                "start": {
                                  "line": 111,
                                  "column": 26
                                },
                                "end": {
                                  "line": 111,
                                  "column": 29
                                },
                                "identifierName": "has"
                              },
                              "name": "has"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4314,
                              "end": 4317,
                              "loc": {
                                "start": {
                                  "line": 111,
                                  "column": 30
                                },
                                "end": {
                                  "line": 111,
                                  "column": 33
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 4332,
                        "end": 4359,
                        "loc": {
                          "start": {
                            "line": 112,
                            "column": 12
                          },
                          "end": {
                            "line": 112,
                            "column": 39
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 4332,
                          "end": 4358,
                          "loc": {
                            "start": {
                              "line": 112,
                              "column": 12
                            },
                            "end": {
                              "line": 112,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4332,
                            "end": 4348,
                            "loc": {
                              "start": {
                                "line": 112,
                                "column": 12
                              },
                              "end": {
                                "line": 112,
                                "column": 28
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4332,
                              "end": 4344,
                              "loc": {
                                "start": {
                                  "line": 112,
                                  "column": 12
                                },
                                "end": {
                                  "line": 112,
                                  "column": 24
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4332,
                                "end": 4336,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 112,
                                    "column": 16
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4337,
                                "end": 4344,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 17
                                  },
                                  "end": {
                                    "line": 112,
                                    "column": 24
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4345,
                              "end": 4348,
                              "loc": {
                                "start": {
                                  "line": 112,
                                  "column": 25
                                },
                                "end": {
                                  "line": 112,
                                  "column": 28
                                },
                                "identifierName": "set"
                              },
                              "name": "set"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4349,
                              "end": 4352,
                              "loc": {
                                "start": {
                                  "line": 112,
                                  "column": 29
                                },
                                "end": {
                                  "line": 112,
                                  "column": 32
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            },
                            {
                              "type": "Identifier",
                              "start": 4354,
                              "end": 4357,
                              "loc": {
                                "start": {
                                  "line": 112,
                                  "column": 34
                                },
                                "end": {
                                  "line": 112,
                                  "column": 37
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        }
                      },
                      "alternate": null
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4371,
                "end": 4577,
                "loc": {
                  "start": {
                    "line": 115,
                    "column": 4
                  },
                  "end": {
                    "line": 122,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4371,
                  "end": 4378,
                  "loc": {
                    "start": {
                      "line": 115,
                      "column": 4
                    },
                    "end": {
                      "line": 115,
                      "column": 11
                    },
                    "identifierName": "getHead"
                  },
                  "name": "getHead"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4379,
                    "end": 4382,
                    "loc": {
                      "start": {
                        "line": 115,
                        "column": 12
                      },
                      "end": {
                        "line": 115,
                        "column": 15
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4384,
                  "end": 4577,
                  "loc": {
                    "start": {
                      "line": 115,
                      "column": 17
                    },
                    "end": {
                      "line": 122,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 4394,
                      "end": 4426,
                      "loc": {
                        "start": {
                          "line": 116,
                          "column": 8
                        },
                        "end": {
                          "line": 116,
                          "column": 40
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 4400,
                          "end": 4425,
                          "loc": {
                            "start": {
                              "line": 116,
                              "column": 14
                            },
                            "end": {
                              "line": 116,
                              "column": 39
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 4400,
                            "end": 4403,
                            "loc": {
                              "start": {
                                "line": 116,
                                "column": 14
                              },
                              "end": {
                                "line": 116,
                                "column": 17
                              },
                              "identifierName": "par"
                            },
                            "name": "par"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 4406,
                            "end": 4425,
                            "loc": {
                              "start": {
                                "line": 116,
                                "column": 20
                              },
                              "end": {
                                "line": 116,
                                "column": 39
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4406,
                              "end": 4420,
                              "loc": {
                                "start": {
                                  "line": 116,
                                  "column": 20
                                },
                                "end": {
                                  "line": 116,
                                  "column": 34
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4406,
                                "end": 4410,
                                "loc": {
                                  "start": {
                                    "line": 116,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 116,
                                    "column": 24
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4411,
                                "end": 4420,
                                "loc": {
                                  "start": {
                                    "line": 116,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 116,
                                    "column": 34
                                  },
                                  "identifierName": "getParent"
                                },
                                "name": "getParent"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 4421,
                                "end": 4424,
                                "loc": {
                                  "start": {
                                    "line": 116,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 116,
                                    "column": 38
                                  },
                                  "identifierName": "obj"
                                },
                                "name": "obj"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "IfStatement",
                      "start": 4435,
                      "end": 4475,
                      "loc": {
                        "start": {
                          "line": 117,
                          "column": 8
                        },
                        "end": {
                          "line": 118,
                          "column": 23
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 4439,
                        "end": 4450,
                        "loc": {
                          "start": {
                            "line": 117,
                            "column": 12
                          },
                          "end": {
                            "line": 117,
                            "column": 23
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 4439,
                          "end": 4442,
                          "loc": {
                            "start": {
                              "line": 117,
                              "column": 12
                            },
                            "end": {
                              "line": 117,
                              "column": 15
                            },
                            "identifierName": "par"
                          },
                          "name": "par"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 4447,
                          "end": 4450,
                          "loc": {
                            "start": {
                              "line": 117,
                              "column": 20
                            },
                            "end": {
                              "line": 117,
                              "column": 23
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 4464,
                        "end": 4475,
                        "loc": {
                          "start": {
                            "line": 118,
                            "column": 12
                          },
                          "end": {
                            "line": 118,
                            "column": 23
                          }
                        },
                        "argument": {
                          "type": "Identifier",
                          "start": 4471,
                          "end": 4474,
                          "loc": {
                            "start": {
                              "line": 118,
                              "column": 19
                            },
                            "end": {
                              "line": 118,
                              "column": 22
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 4484,
                      "end": 4515,
                      "loc": {
                        "start": {
                          "line": 119,
                          "column": 8
                        },
                        "end": {
                          "line": 119,
                          "column": 39
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 4490,
                          "end": 4514,
                          "loc": {
                            "start": {
                              "line": 119,
                              "column": 14
                            },
                            "end": {
                              "line": 119,
                              "column": 38
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 4490,
                            "end": 4494,
                            "loc": {
                              "start": {
                                "line": 119,
                                "column": 14
                              },
                              "end": {
                                "line": 119,
                                "column": 18
                              },
                              "identifierName": "head"
                            },
                            "name": "head"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 4497,
                            "end": 4514,
                            "loc": {
                              "start": {
                                "line": 119,
                                "column": 21
                              },
                              "end": {
                                "line": 119,
                                "column": 38
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4497,
                              "end": 4509,
                              "loc": {
                                "start": {
                                  "line": 119,
                                  "column": 21
                                },
                                "end": {
                                  "line": 119,
                                  "column": 33
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4497,
                                "end": 4501,
                                "loc": {
                                  "start": {
                                    "line": 119,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 119,
                                    "column": 25
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4502,
                                "end": 4509,
                                "loc": {
                                  "start": {
                                    "line": 119,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 119,
                                    "column": 33
                                  },
                                  "identifierName": "getHead"
                                },
                                "name": "getHead"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 4510,
                                "end": 4513,
                                "loc": {
                                  "start": {
                                    "line": 119,
                                    "column": 34
                                  },
                                  "end": {
                                    "line": 119,
                                    "column": 37
                                  },
                                  "identifierName": "par"
                                },
                                "name": "par"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4524,
                      "end": 4550,
                      "loc": {
                        "start": {
                          "line": 120,
                          "column": 8
                        },
                        "end": {
                          "line": 120,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4524,
                        "end": 4549,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 8
                          },
                          "end": {
                            "line": 120,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4524,
                          "end": 4538,
                          "loc": {
                            "start": {
                              "line": 120,
                              "column": 8
                            },
                            "end": {
                              "line": 120,
                              "column": 22
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4524,
                            "end": 4528,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 8
                              },
                              "end": {
                                "line": 120,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4529,
                            "end": 4538,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 13
                              },
                              "end": {
                                "line": 120,
                                "column": 22
                              },
                              "identifierName": "setParent"
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4539,
                            "end": 4542,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 23
                              },
                              "end": {
                                "line": 120,
                                "column": 26
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 4544,
                            "end": 4548,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 28
                              },
                              "end": {
                                "line": 120,
                                "column": 32
                              },
                              "identifierName": "head"
                            },
                            "name": "head"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 4559,
                      "end": 4571,
                      "loc": {
                        "start": {
                          "line": 121,
                          "column": 8
                        },
                        "end": {
                          "line": 121,
                          "column": 20
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 4566,
                        "end": 4570,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 15
                          },
                          "end": {
                            "line": 121,
                            "column": 19
                          },
                          "identifierName": "head"
                        },
                        "name": "head"
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4583,
                "end": 4819,
                "loc": {
                  "start": {
                    "line": 124,
                    "column": 4
                  },
                  "end": {
                    "line": 130,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4583,
                  "end": 4588,
                  "loc": {
                    "start": {
                      "line": 124,
                      "column": 4
                    },
                    "end": {
                      "line": 124,
                      "column": 9
                    },
                    "identifierName": "merge"
                  },
                  "name": "merge"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4589,
                    "end": 4593,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 10
                      },
                      "end": {
                        "line": 124,
                        "column": 14
                      },
                      "identifierName": "objA"
                    },
                    "name": "objA"
                  },
                  {
                    "type": "Identifier",
                    "start": 4595,
                    "end": 4599,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 16
                      },
                      "end": {
                        "line": 124,
                        "column": 20
                      },
                      "identifierName": "objB"
                    },
                    "name": "objB"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4601,
                  "end": 4819,
                  "loc": {
                    "start": {
                      "line": 124,
                      "column": 22
                    },
                    "end": {
                      "line": 130,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4611,
                      "end": 4628,
                      "loc": {
                        "start": {
                          "line": 125,
                          "column": 8
                        },
                        "end": {
                          "line": 125,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4611,
                        "end": 4627,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 8
                          },
                          "end": {
                            "line": 125,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4611,
                          "end": 4621,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 8
                            },
                            "end": {
                              "line": 125,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4611,
                            "end": 4615,
                            "loc": {
                              "start": {
                                "line": 125,
                                "column": 8
                              },
                              "end": {
                                "line": 125,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4616,
                            "end": 4621,
                            "loc": {
                              "start": {
                                "line": 125,
                                "column": 13
                              },
                              "end": {
                                "line": 125,
                                "column": 18
                              },
                              "identifierName": "touch"
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4622,
                            "end": 4626,
                            "loc": {
                              "start": {
                                "line": 125,
                                "column": 19
                              },
                              "end": {
                                "line": 125,
                                "column": 23
                              },
                              "identifierName": "objA"
                            },
                            "name": "objA"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4637,
                      "end": 4654,
                      "loc": {
                        "start": {
                          "line": 126,
                          "column": 8
                        },
                        "end": {
                          "line": 126,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4637,
                        "end": 4653,
                        "loc": {
                          "start": {
                            "line": 126,
                            "column": 8
                          },
                          "end": {
                            "line": 126,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4637,
                          "end": 4647,
                          "loc": {
                            "start": {
                              "line": 126,
                              "column": 8
                            },
                            "end": {
                              "line": 126,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4637,
                            "end": 4641,
                            "loc": {
                              "start": {
                                "line": 126,
                                "column": 8
                              },
                              "end": {
                                "line": 126,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4642,
                            "end": 4647,
                            "loc": {
                              "start": {
                                "line": 126,
                                "column": 13
                              },
                              "end": {
                                "line": 126,
                                "column": 18
                              },
                              "identifierName": "touch"
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4648,
                            "end": 4652,
                            "loc": {
                              "start": {
                                "line": 126,
                                "column": 19
                              },
                              "end": {
                                "line": 126,
                                "column": 23
                              },
                              "identifierName": "objB"
                            },
                            "name": "objB"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4663,
                      "end": 4689,
                      "loc": {
                        "start": {
                          "line": 127,
                          "column": 8
                        },
                        "end": {
                          "line": 127,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4663,
                        "end": 4688,
                        "loc": {
                          "start": {
                            "line": 127,
                            "column": 8
                          },
                          "end": {
                            "line": 127,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 4663,
                          "end": 4667,
                          "loc": {
                            "start": {
                              "line": 127,
                              "column": 8
                            },
                            "end": {
                              "line": 127,
                              "column": 12
                            },
                            "identifierName": "objA"
                          },
                          "name": "objA"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 4670,
                          "end": 4688,
                          "loc": {
                            "start": {
                              "line": 127,
                              "column": 15
                            },
                            "end": {
                              "line": 127,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4670,
                            "end": 4682,
                            "loc": {
                              "start": {
                                "line": 127,
                                "column": 15
                              },
                              "end": {
                                "line": 127,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4670,
                              "end": 4674,
                              "loc": {
                                "start": {
                                  "line": 127,
                                  "column": 15
                                },
                                "end": {
                                  "line": 127,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4675,
                              "end": 4682,
                              "loc": {
                                "start": {
                                  "line": 127,
                                  "column": 20
                                },
                                "end": {
                                  "line": 127,
                                  "column": 27
                                },
                                "identifierName": "getHead"
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4683,
                              "end": 4687,
                              "loc": {
                                "start": {
                                  "line": 127,
                                  "column": 28
                                },
                                "end": {
                                  "line": 127,
                                  "column": 32
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4698,
                      "end": 4724,
                      "loc": {
                        "start": {
                          "line": 128,
                          "column": 8
                        },
                        "end": {
                          "line": 128,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4698,
                        "end": 4723,
                        "loc": {
                          "start": {
                            "line": 128,
                            "column": 8
                          },
                          "end": {
                            "line": 128,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 4698,
                          "end": 4702,
                          "loc": {
                            "start": {
                              "line": 128,
                              "column": 8
                            },
                            "end": {
                              "line": 128,
                              "column": 12
                            },
                            "identifierName": "objB"
                          },
                          "name": "objB"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 4705,
                          "end": 4723,
                          "loc": {
                            "start": {
                              "line": 128,
                              "column": 15
                            },
                            "end": {
                              "line": 128,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4705,
                            "end": 4717,
                            "loc": {
                              "start": {
                                "line": 128,
                                "column": 15
                              },
                              "end": {
                                "line": 128,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4705,
                              "end": 4709,
                              "loc": {
                                "start": {
                                  "line": 128,
                                  "column": 15
                                },
                                "end": {
                                  "line": 128,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4710,
                              "end": 4717,
                              "loc": {
                                "start": {
                                  "line": 128,
                                  "column": 20
                                },
                                "end": {
                                  "line": 128,
                                  "column": 27
                                },
                                "identifierName": "getHead"
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4718,
                              "end": 4722,
                              "loc": {
                                "start": {
                                  "line": 128,
                                  "column": 28
                                },
                                "end": {
                                  "line": 128,
                                  "column": 32
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4733,
                      "end": 4813,
                      "loc": {
                        "start": {
                          "line": 129,
                          "column": 8
                        },
                        "end": {
                          "line": 129,
                          "column": 88
                        }
                      },
                      "expression": {
                        "type": "ConditionalExpression",
                        "start": 4733,
                        "end": 4812,
                        "loc": {
                          "start": {
                            "line": 129,
                            "column": 8
                          },
                          "end": {
                            "line": 129,
                            "column": 87
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 4734,
                          "end": 4753,
                          "loc": {
                            "start": {
                              "line": 129,
                              "column": 9
                            },
                            "end": {
                              "line": 129,
                              "column": 28
                            }
                          },
                          "left": {
                            "type": "CallExpression",
                            "start": 4734,
                            "end": 4747,
                            "loc": {
                              "start": {
                                "line": 129,
                                "column": 9
                              },
                              "end": {
                                "line": 129,
                                "column": 22
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4734,
                              "end": 4745,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 9
                                },
                                "end": {
                                  "line": 129,
                                  "column": 20
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 4734,
                                "end": 4738,
                                "loc": {
                                  "start": {
                                    "line": 129,
                                    "column": 9
                                  },
                                  "end": {
                                    "line": 129,
                                    "column": 13
                                  },
                                  "identifierName": "Math"
                                },
                                "name": "Math"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4739,
                                "end": 4745,
                                "loc": {
                                  "start": {
                                    "line": 129,
                                    "column": 14
                                  },
                                  "end": {
                                    "line": 129,
                                    "column": 20
                                  },
                                  "identifierName": "random"
                                },
                                "name": "random"
                              },
                              "computed": false
                            },
                            "arguments": []
                          },
                          "operator": "<",
                          "right": {
                            "type": "NumericLiteral",
                            "start": 4750,
                            "end": 4753,
                            "loc": {
                              "start": {
                                "line": 129,
                                "column": 25
                              },
                              "end": {
                                "line": 129,
                                "column": 28
                              }
                            },
                            "extra": {
                              "rawValue": 0.5,
                              "raw": "0.5"
                            },
                            "value": 0.5
                          },
                          "extra": {
                            "parenthesized": true,
                            "parenStart": 4733
                          }
                        },
                        "consequent": {
                          "type": "CallExpression",
                          "start": 4757,
                          "end": 4783,
                          "loc": {
                            "start": {
                              "line": 129,
                              "column": 32
                            },
                            "end": {
                              "line": 129,
                              "column": 58
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4757,
                            "end": 4771,
                            "loc": {
                              "start": {
                                "line": 129,
                                "column": 32
                              },
                              "end": {
                                "line": 129,
                                "column": 46
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4757,
                              "end": 4761,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 32
                                },
                                "end": {
                                  "line": 129,
                                  "column": 36
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4762,
                              "end": 4771,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 37
                                },
                                "end": {
                                  "line": 129,
                                  "column": 46
                                },
                                "identifierName": "setParent"
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4772,
                              "end": 4776,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 47
                                },
                                "end": {
                                  "line": 129,
                                  "column": 51
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            },
                            {
                              "type": "Identifier",
                              "start": 4778,
                              "end": 4782,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 53
                                },
                                "end": {
                                  "line": 129,
                                  "column": 57
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            }
                          ]
                        },
                        "alternate": {
                          "type": "CallExpression",
                          "start": 4786,
                          "end": 4812,
                          "loc": {
                            "start": {
                              "line": 129,
                              "column": 61
                            },
                            "end": {
                              "line": 129,
                              "column": 87
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4786,
                            "end": 4800,
                            "loc": {
                              "start": {
                                "line": 129,
                                "column": 61
                              },
                              "end": {
                                "line": 129,
                                "column": 75
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4786,
                              "end": 4790,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 61
                                },
                                "end": {
                                  "line": 129,
                                  "column": 65
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4791,
                              "end": 4800,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 66
                                },
                                "end": {
                                  "line": 129,
                                  "column": 75
                                },
                                "identifierName": "setParent"
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4801,
                              "end": 4805,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 76
                                },
                                "end": {
                                  "line": 129,
                                  "column": 80
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            },
                            {
                              "type": "Identifier",
                              "start": 4807,
                              "end": 4811,
                              "loc": {
                                "start": {
                                  "line": 129,
                                  "column": 82
                                },
                                "end": {
                                  "line": 129,
                                  "column": 86
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4825,
                "end": 4893,
                "loc": {
                  "start": {
                    "line": 132,
                    "column": 4
                  },
                  "end": {
                    "line": 134,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4825,
                  "end": 4835,
                  "loc": {
                    "start": {
                      "line": 132,
                      "column": 4
                    },
                    "end": {
                      "line": 132,
                      "column": 14
                    },
                    "identifierName": "getTouched"
                  },
                  "name": "getTouched"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 4838,
                  "end": 4893,
                  "loc": {
                    "start": {
                      "line": 132,
                      "column": 17
                    },
                    "end": {
                      "line": 134,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 4848,
                      "end": 4887,
                      "loc": {
                        "start": {
                          "line": 133,
                          "column": 8
                        },
                        "end": {
                          "line": 133,
                          "column": 47
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 4855,
                        "end": 4886,
                        "loc": {
                          "start": {
                            "line": 133,
                            "column": 15
                          },
                          "end": {
                            "line": 133,
                            "column": 46
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4855,
                          "end": 4865,
                          "loc": {
                            "start": {
                              "line": 133,
                              "column": 15
                            },
                            "end": {
                              "line": 133,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4855,
                            "end": 4860,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 15
                              },
                              "end": {
                                "line": 133,
                                "column": 20
                              },
                              "identifierName": "Array"
                            },
                            "name": "Array"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4861,
                            "end": 4865,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 21
                              },
                              "end": {
                                "line": 133,
                                "column": 25
                              },
                              "identifierName": "from"
                            },
                            "name": "from"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "CallExpression",
                            "start": 4866,
                            "end": 4885,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 26
                              },
                              "end": {
                                "line": 133,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4866,
                              "end": 4883,
                              "loc": {
                                "start": {
                                  "line": 133,
                                  "column": 26
                                },
                                "end": {
                                  "line": 133,
                                  "column": 43
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 4866,
                                "end": 4878,
                                "loc": {
                                  "start": {
                                    "line": 133,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 133,
                                    "column": 38
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 4866,
                                  "end": 4870,
                                  "loc": {
                                    "start": {
                                      "line": 133,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 133,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4871,
                                  "end": 4878,
                                  "loc": {
                                    "start": {
                                      "line": 133,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 133,
                                      "column": 38
                                    },
                                    "identifierName": "parents"
                                  },
                                  "name": "parents"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4879,
                                "end": 4883,
                                "loc": {
                                  "start": {
                                    "line": 133,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 133,
                                    "column": 43
                                  },
                                  "identifierName": "keys"
                                },
                                "name": "keys"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        ]
                      }
                    }
                  ],
                  "directives": []
                }
              }
            ]
          },
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " Disjoint Set Union",
              "start": 4000,
              "end": 4021,
              "loc": {
                "start": {
                  "line": 96,
                  "column": 0
                },
                "end": {
                  "line": 96,
                  "column": 21
                }
              }
            }
          ],
          "trailingComments": []
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " Disjoint Set Union",
            "start": 4000,
            "end": 4021,
            "loc": {
              "start": {
                "line": 96,
                "column": 0
              },
              "end": {
                "line": 96,
                "column": 21
              }
            }
          }
        ]
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentLine",
      "value": " the sketch we are going to add constraints to",
      "start": 219,
      "end": 267,
      "loc": {
        "start": {
          "line": 7,
          "column": 8
        },
        "end": {
          "line": 7,
          "column": 56
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " the list of constraint geomParams which really should be added",
      "start": 306,
      "end": 371,
      "loc": {
        "start": {
          "line": 9,
          "column": 8
        },
        "end": {
          "line": 9,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " dsu structures for incident and inc-tangent point groups",
      "start": 412,
      "end": 471,
      "loc": {
        "start": {
          "line": 12,
          "column": 8
        },
        "end": {
          "line": 12,
          "column": 67
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "this.tangencyDsu = new DSU();    // TODO!",
      "start": 519,
      "end": 562,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 51
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sets of horizontal and vertical lines",
      "start": 571,
      "end": 611,
      "loc": {
        "start": {
          "line": 15,
          "column": 8
        },
        "end": {
          "line": 15,
          "column": 48
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " preprocess all objects and constraints currently on sketch",
      "start": 699,
      "end": 760,
      "loc": {
        "start": {
          "line": 19,
          "column": 8
        },
        "end": {
          "line": 19,
          "column": 69
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " take all present constraints into account",
      "start": 810,
      "end": 854,
      "loc": {
        "start": {
          "line": 24,
          "column": 8
        },
        "end": {
          "line": 24,
          "column": 52
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " add a new constraint to the internal buffer (if it is not excessive)",
      "start": 1284,
      "end": 1355,
      "loc": {
        "start": {
          "line": 34,
          "column": 4
        },
        "end": {
          "line": 34,
          "column": 75
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " if a new constraint is not excessive, then take it into account",
      "start": 1516,
      "end": 1582,
      "loc": {
        "start": {
          "line": 38,
          "column": 8
        },
        "end": {
          "line": 38,
          "column": 74
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: implement more complicated handling of incidence",
      "start": 1656,
      "end": 1713,
      "loc": {
        "start": {
          "line": 41,
          "column": 16
        },
        "end": {
          "line": 41,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
      "start": 1730,
      "end": 1823,
      "loc": {
        "start": {
          "line": 42,
          "column": 16
        },
        "end": {
          "line": 42,
          "column": 109
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
      "start": 1840,
      "end": 1923,
      "loc": {
        "start": {
          "line": 43,
          "column": 16
        },
        "end": {
          "line": 43,
          "column": 99
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: optimize this O(N) search",
      "start": 2673,
      "end": 2707,
      "loc": {
        "start": {
          "line": 62,
          "column": 16
        },
        "end": {
          "line": 62,
          "column": 50
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " return constraint statements in the internal buffer, clear the buffer",
      "start": 3066,
      "end": 3138,
      "loc": {
        "start": {
          "line": 73,
          "column": 4
        },
        "end": {
          "line": 73,
          "column": 76
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " ignore parametric constraints",
      "start": 3638,
      "end": 3670,
      "loc": {
        "start": {
          "line": 87,
          "column": 22
        },
        "end": {
          "line": 87,
          "column": 54
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Disjoint Set Union",
      "start": 4000,
      "end": 4021,
      "loc": {
        "start": {
          "line": 96,
          "column": 0
        },
        "end": {
          "line": 96,
          "column": 21
        }
      }
    }
  ],
  "tokens": [
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 0,
      "end": 6,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 7,
      "end": 8,
      "loc": {
        "start": {
          "line": 1,
          "column": 7
        },
        "end": {
          "line": 1,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addCommand",
      "start": 8,
      "end": 18,
      "loc": {
        "start": {
          "line": 1,
          "column": 8
        },
        "end": {
          "line": 1,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 18,
      "end": 19,
      "loc": {
        "start": {
          "line": 1,
          "column": 18
        },
        "end": {
          "line": 1,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 20,
      "end": 24,
      "loc": {
        "start": {
          "line": 1,
          "column": 20
        },
        "end": {
          "line": 1,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "../command/highlevel",
      "start": 25,
      "end": 47,
      "loc": {
        "start": {
          "line": 1,
          "column": 25
        },
        "end": {
          "line": 1,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 47,
      "end": 48,
      "loc": {
        "start": {
          "line": 1,
          "column": 47
        },
        "end": {
          "line": 1,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 49,
      "end": 55,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Constraint",
      "start": 56,
      "end": 66,
      "loc": {
        "start": {
          "line": 2,
          "column": 7
        },
        "end": {
          "line": 2,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 67,
      "end": 71,
      "loc": {
        "start": {
          "line": 2,
          "column": 18
        },
        "end": {
          "line": 2,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./index",
      "start": 72,
      "end": 81,
      "loc": {
        "start": {
          "line": 2,
          "column": 23
        },
        "end": {
          "line": 2,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 81,
      "end": 82,
      "loc": {
        "start": {
          "line": 2,
          "column": 32
        },
        "end": {
          "line": 2,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 83,
      "end": 89,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 90,
      "end": 91,
      "loc": {
        "start": {
          "line": 3,
          "column": 7
        },
        "end": {
          "line": 3,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidence",
      "start": 91,
      "end": 100,
      "loc": {
        "start": {
          "line": 3,
          "column": 8
        },
        "end": {
          "line": 3,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 100,
      "end": 101,
      "loc": {
        "start": {
          "line": 3,
          "column": 17
        },
        "end": {
          "line": 3,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 102,
      "end": 115,
      "loc": {
        "start": {
          "line": 3,
          "column": 19
        },
        "end": {
          "line": 3,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 115,
      "end": 116,
      "loc": {
        "start": {
          "line": 3,
          "column": 32
        },
        "end": {
          "line": 3,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticality",
      "start": 117,
      "end": 128,
      "loc": {
        "start": {
          "line": 3,
          "column": 34
        },
        "end": {
          "line": 3,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 128,
      "end": 129,
      "loc": {
        "start": {
          "line": 3,
          "column": 45
        },
        "end": {
          "line": 3,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 130,
      "end": 134,
      "loc": {
        "start": {
          "line": 3,
          "column": 47
        },
        "end": {
          "line": 3,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./type",
      "start": 135,
      "end": 143,
      "loc": {
        "start": {
          "line": 3,
          "column": 52
        },
        "end": {
          "line": 3,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 143,
      "end": 144,
      "loc": {
        "start": {
          "line": 3,
          "column": 60
        },
        "end": {
          "line": 3,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 146,
      "end": 152,
      "loc": {
        "start": {
          "line": 5,
          "column": 0
        },
        "end": {
          "line": 5,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "default",
        "keyword": "default",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "default",
      "start": 153,
      "end": 160,
      "loc": {
        "start": {
          "line": 5,
          "column": 7
        },
        "end": {
          "line": 5,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 161,
      "end": 166,
      "loc": {
        "start": {
          "line": 5,
          "column": 15
        },
        "end": {
          "line": 5,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "ConstraintAdder",
      "start": 167,
      "end": 182,
      "loc": {
        "start": {
          "line": 5,
          "column": 21
        },
        "end": {
          "line": 5,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 183,
      "end": 184,
      "loc": {
        "start": {
          "line": 5,
          "column": 37
        },
        "end": {
          "line": 5,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constructor",
      "start": 189,
      "end": 200,
      "loc": {
        "start": {
          "line": 6,
          "column": 4
        },
        "end": {
          "line": 6,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 200,
      "end": 201,
      "loc": {
        "start": {
          "line": 6,
          "column": 15
        },
        "end": {
          "line": 6,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 201,
      "end": 207,
      "loc": {
        "start": {
          "line": 6,
          "column": 16
        },
        "end": {
          "line": 6,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 207,
      "end": 208,
      "loc": {
        "start": {
          "line": 6,
          "column": 22
        },
        "end": {
          "line": 6,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 209,
      "end": 210,
      "loc": {
        "start": {
          "line": 6,
          "column": 24
        },
        "end": {
          "line": 6,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " the sketch we are going to add constraints to",
      "start": 219,
      "end": 267,
      "loc": {
        "start": {
          "line": 7,
          "column": 8
        },
        "end": {
          "line": 7,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 276,
      "end": 280,
      "loc": {
        "start": {
          "line": 8,
          "column": 8
        },
        "end": {
          "line": 8,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 280,
      "end": 281,
      "loc": {
        "start": {
          "line": 8,
          "column": 12
        },
        "end": {
          "line": 8,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 281,
      "end": 287,
      "loc": {
        "start": {
          "line": 8,
          "column": 13
        },
        "end": {
          "line": 8,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 288,
      "end": 289,
      "loc": {
        "start": {
          "line": 8,
          "column": 20
        },
        "end": {
          "line": 8,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 290,
      "end": 296,
      "loc": {
        "start": {
          "line": 8,
          "column": 22
        },
        "end": {
          "line": 8,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 296,
      "end": 297,
      "loc": {
        "start": {
          "line": 8,
          "column": 28
        },
        "end": {
          "line": 8,
          "column": 29
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " the list of constraint geomParams which really should be added",
      "start": 306,
      "end": 371,
      "loc": {
        "start": {
          "line": 9,
          "column": 8
        },
        "end": {
          "line": 9,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 380,
      "end": 384,
      "loc": {
        "start": {
          "line": 10,
          "column": 8
        },
        "end": {
          "line": 10,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 384,
      "end": 385,
      "loc": {
        "start": {
          "line": 10,
          "column": 12
        },
        "end": {
          "line": 10,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 385,
      "end": 396,
      "loc": {
        "start": {
          "line": 10,
          "column": 13
        },
        "end": {
          "line": 10,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 397,
      "end": 398,
      "loc": {
        "start": {
          "line": 10,
          "column": 25
        },
        "end": {
          "line": 10,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 399,
      "end": 400,
      "loc": {
        "start": {
          "line": 10,
          "column": 27
        },
        "end": {
          "line": 10,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 400,
      "end": 401,
      "loc": {
        "start": {
          "line": 10,
          "column": 28
        },
        "end": {
          "line": 10,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 401,
      "end": 402,
      "loc": {
        "start": {
          "line": 10,
          "column": 29
        },
        "end": {
          "line": 10,
          "column": 30
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " dsu structures for incident and inc-tangent point groups",
      "start": 412,
      "end": 471,
      "loc": {
        "start": {
          "line": 12,
          "column": 8
        },
        "end": {
          "line": 12,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 480,
      "end": 484,
      "loc": {
        "start": {
          "line": 13,
          "column": 8
        },
        "end": {
          "line": 13,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 484,
      "end": 485,
      "loc": {
        "start": {
          "line": 13,
          "column": 12
        },
        "end": {
          "line": 13,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 485,
      "end": 497,
      "loc": {
        "start": {
          "line": 13,
          "column": 13
        },
        "end": {
          "line": 13,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 498,
      "end": 499,
      "loc": {
        "start": {
          "line": 13,
          "column": 26
        },
        "end": {
          "line": 13,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 500,
      "end": 503,
      "loc": {
        "start": {
          "line": 13,
          "column": 28
        },
        "end": {
          "line": 13,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DSU",
      "start": 504,
      "end": 507,
      "loc": {
        "start": {
          "line": 13,
          "column": 32
        },
        "end": {
          "line": 13,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 507,
      "end": 508,
      "loc": {
        "start": {
          "line": 13,
          "column": 35
        },
        "end": {
          "line": 13,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 508,
      "end": 509,
      "loc": {
        "start": {
          "line": 13,
          "column": 36
        },
        "end": {
          "line": 13,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 509,
      "end": 510,
      "loc": {
        "start": {
          "line": 13,
          "column": 37
        },
        "end": {
          "line": 13,
          "column": 38
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "this.tangencyDsu = new DSU();    // TODO!",
      "start": 519,
      "end": 562,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 51
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sets of horizontal and vertical lines",
      "start": 571,
      "end": 611,
      "loc": {
        "start": {
          "line": 15,
          "column": 8
        },
        "end": {
          "line": 15,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 620,
      "end": 624,
      "loc": {
        "start": {
          "line": 16,
          "column": 8
        },
        "end": {
          "line": 16,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 624,
      "end": 625,
      "loc": {
        "start": {
          "line": 16,
          "column": 12
        },
        "end": {
          "line": 16,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 625,
      "end": 638,
      "loc": {
        "start": {
          "line": 16,
          "column": 13
        },
        "end": {
          "line": 16,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 639,
      "end": 640,
      "loc": {
        "start": {
          "line": 16,
          "column": 27
        },
        "end": {
          "line": 16,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 641,
      "end": 644,
      "loc": {
        "start": {
          "line": 16,
          "column": 29
        },
        "end": {
          "line": 16,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Set",
      "start": 645,
      "end": 648,
      "loc": {
        "start": {
          "line": 16,
          "column": 33
        },
        "end": {
          "line": 16,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 648,
      "end": 649,
      "loc": {
        "start": {
          "line": 16,
          "column": 36
        },
        "end": {
          "line": 16,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 649,
      "end": 650,
      "loc": {
        "start": {
          "line": 16,
          "column": 37
        },
        "end": {
          "line": 16,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 650,
      "end": 651,
      "loc": {
        "start": {
          "line": 16,
          "column": 38
        },
        "end": {
          "line": 16,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 660,
      "end": 664,
      "loc": {
        "start": {
          "line": 17,
          "column": 8
        },
        "end": {
          "line": 17,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 664,
      "end": 665,
      "loc": {
        "start": {
          "line": 17,
          "column": 12
        },
        "end": {
          "line": 17,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 665,
      "end": 676,
      "loc": {
        "start": {
          "line": 17,
          "column": 13
        },
        "end": {
          "line": 17,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 677,
      "end": 678,
      "loc": {
        "start": {
          "line": 17,
          "column": 25
        },
        "end": {
          "line": 17,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 679,
      "end": 682,
      "loc": {
        "start": {
          "line": 17,
          "column": 27
        },
        "end": {
          "line": 17,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Set",
      "start": 683,
      "end": 686,
      "loc": {
        "start": {
          "line": 17,
          "column": 31
        },
        "end": {
          "line": 17,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 686,
      "end": 687,
      "loc": {
        "start": {
          "line": 17,
          "column": 34
        },
        "end": {
          "line": 17,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 687,
      "end": 688,
      "loc": {
        "start": {
          "line": 17,
          "column": 35
        },
        "end": {
          "line": 17,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 688,
      "end": 689,
      "loc": {
        "start": {
          "line": 17,
          "column": 36
        },
        "end": {
          "line": 17,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " preprocess all objects and constraints currently on sketch",
      "start": 699,
      "end": 760,
      "loc": {
        "start": {
          "line": 19,
          "column": 8
        },
        "end": {
          "line": 19,
          "column": 69
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 769,
      "end": 773,
      "loc": {
        "start": {
          "line": 20,
          "column": 8
        },
        "end": {
          "line": 20,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 773,
      "end": 774,
      "loc": {
        "start": {
          "line": 20,
          "column": 12
        },
        "end": {
          "line": 20,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "init",
      "start": 774,
      "end": 778,
      "loc": {
        "start": {
          "line": 20,
          "column": 13
        },
        "end": {
          "line": 20,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 778,
      "end": 779,
      "loc": {
        "start": {
          "line": 20,
          "column": 17
        },
        "end": {
          "line": 20,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 779,
      "end": 780,
      "loc": {
        "start": {
          "line": 20,
          "column": 18
        },
        "end": {
          "line": 20,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 780,
      "end": 781,
      "loc": {
        "start": {
          "line": 20,
          "column": 19
        },
        "end": {
          "line": 20,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 786,
      "end": 787,
      "loc": {
        "start": {
          "line": 21,
          "column": 4
        },
        "end": {
          "line": 21,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "init",
      "start": 793,
      "end": 797,
      "loc": {
        "start": {
          "line": 23,
          "column": 4
        },
        "end": {
          "line": 23,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 797,
      "end": 798,
      "loc": {
        "start": {
          "line": 23,
          "column": 8
        },
        "end": {
          "line": 23,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 798,
      "end": 799,
      "loc": {
        "start": {
          "line": 23,
          "column": 9
        },
        "end": {
          "line": 23,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 800,
      "end": 801,
      "loc": {
        "start": {
          "line": 23,
          "column": 11
        },
        "end": {
          "line": 23,
          "column": 12
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " take all present constraints into account",
      "start": 810,
      "end": 854,
      "loc": {
        "start": {
          "line": 24,
          "column": 8
        },
        "end": {
          "line": 24,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "for",
        "keyword": "for",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": true,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "for",
      "start": 863,
      "end": 866,
      "loc": {
        "start": {
          "line": 25,
          "column": 8
        },
        "end": {
          "line": 25,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 867,
      "end": 868,
      "loc": {
        "start": {
          "line": 25,
          "column": 12
        },
        "end": {
          "line": 25,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 868,
      "end": 871,
      "loc": {
        "start": {
          "line": 25,
          "column": 13
        },
        "end": {
          "line": 25,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 872,
      "end": 878,
      "loc": {
        "start": {
          "line": 25,
          "column": 17
        },
        "end": {
          "line": 25,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "of",
      "start": 879,
      "end": 881,
      "loc": {
        "start": {
          "line": 25,
          "column": 24
        },
        "end": {
          "line": 25,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 882,
      "end": 886,
      "loc": {
        "start": {
          "line": 25,
          "column": 27
        },
        "end": {
          "line": 25,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 886,
      "end": 887,
      "loc": {
        "start": {
          "line": 25,
          "column": 31
        },
        "end": {
          "line": 25,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 887,
      "end": 893,
      "loc": {
        "start": {
          "line": 25,
          "column": 32
        },
        "end": {
          "line": 25,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 893,
      "end": 894,
      "loc": {
        "start": {
          "line": 25,
          "column": 38
        },
        "end": {
          "line": 25,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "children",
      "start": 894,
      "end": 902,
      "loc": {
        "start": {
          "line": 25,
          "column": 39
        },
        "end": {
          "line": 25,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 902,
      "end": 903,
      "loc": {
        "start": {
          "line": 25,
          "column": 47
        },
        "end": {
          "line": 25,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 904,
      "end": 905,
      "loc": {
        "start": {
          "line": 25,
          "column": 49
        },
        "end": {
          "line": 25,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "switch",
        "keyword": "switch",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "switch",
      "start": 918,
      "end": 924,
      "loc": {
        "start": {
          "line": 26,
          "column": 12
        },
        "end": {
          "line": 26,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 925,
      "end": 926,
      "loc": {
        "start": {
          "line": 26,
          "column": 19
        },
        "end": {
          "line": 26,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 926,
      "end": 932,
      "loc": {
        "start": {
          "line": 26,
          "column": 20
        },
        "end": {
          "line": 26,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 932,
      "end": 933,
      "loc": {
        "start": {
          "line": 26,
          "column": 26
        },
        "end": {
          "line": 26,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "state",
      "start": 933,
      "end": 938,
      "loc": {
        "start": {
          "line": 26,
          "column": 27
        },
        "end": {
          "line": 26,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 938,
      "end": 939,
      "loc": {
        "start": {
          "line": 26,
          "column": 32
        },
        "end": {
          "line": 26,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 939,
      "end": 944,
      "loc": {
        "start": {
          "line": 26,
          "column": 33
        },
        "end": {
          "line": 26,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 944,
      "end": 945,
      "loc": {
        "start": {
          "line": 26,
          "column": 38
        },
        "end": {
          "line": 26,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 946,
      "end": 947,
      "loc": {
        "start": {
          "line": 26,
          "column": 40
        },
        "end": {
          "line": 26,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 964,
      "end": 968,
      "loc": {
        "start": {
          "line": 27,
          "column": 16
        },
        "end": {
          "line": 27,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidence",
      "start": 969,
      "end": 978,
      "loc": {
        "start": {
          "line": 27,
          "column": 21
        },
        "end": {
          "line": 27,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 978,
      "end": 979,
      "loc": {
        "start": {
          "line": 27,
          "column": 30
        },
        "end": {
          "line": 27,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 979,
      "end": 983,
      "loc": {
        "start": {
          "line": 27,
          "column": 31
        },
        "end": {
          "line": 27,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 983,
      "end": 984,
      "loc": {
        "start": {
          "line": 27,
          "column": 35
        },
        "end": {
          "line": 27,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 985,
      "end": 989,
      "loc": {
        "start": {
          "line": 27,
          "column": 37
        },
        "end": {
          "line": 27,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 989,
      "end": 990,
      "loc": {
        "start": {
          "line": 27,
          "column": 41
        },
        "end": {
          "line": 27,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 990,
      "end": 1002,
      "loc": {
        "start": {
          "line": 27,
          "column": 42
        },
        "end": {
          "line": 27,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1002,
      "end": 1003,
      "loc": {
        "start": {
          "line": 27,
          "column": 54
        },
        "end": {
          "line": 27,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 1003,
      "end": 1008,
      "loc": {
        "start": {
          "line": 27,
          "column": 55
        },
        "end": {
          "line": 27,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1008,
      "end": 1009,
      "loc": {
        "start": {
          "line": 27,
          "column": 60
        },
        "end": {
          "line": 27,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1009,
      "end": 1015,
      "loc": {
        "start": {
          "line": 27,
          "column": 61
        },
        "end": {
          "line": 27,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1015,
      "end": 1016,
      "loc": {
        "start": {
          "line": 27,
          "column": 67
        },
        "end": {
          "line": 27,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1016,
      "end": 1024,
      "loc": {
        "start": {
          "line": 27,
          "column": 68
        },
        "end": {
          "line": 27,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1024,
      "end": 1025,
      "loc": {
        "start": {
          "line": 27,
          "column": 76
        },
        "end": {
          "line": 27,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1025,
      "end": 1026,
      "loc": {
        "start": {
          "line": 27,
          "column": 77
        },
        "end": {
          "line": 27,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1026,
      "end": 1027,
      "loc": {
        "start": {
          "line": 27,
          "column": 78
        },
        "end": {
          "line": 27,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1027,
      "end": 1028,
      "loc": {
        "start": {
          "line": 27,
          "column": 79
        },
        "end": {
          "line": 27,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1028,
      "end": 1030,
      "loc": {
        "start": {
          "line": 27,
          "column": 80
        },
        "end": {
          "line": 27,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1030,
      "end": 1031,
      "loc": {
        "start": {
          "line": 27,
          "column": 82
        },
        "end": {
          "line": 27,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1032,
      "end": 1038,
      "loc": {
        "start": {
          "line": 27,
          "column": 84
        },
        "end": {
          "line": 27,
          "column": 90
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1038,
      "end": 1039,
      "loc": {
        "start": {
          "line": 27,
          "column": 90
        },
        "end": {
          "line": 27,
          "column": 91
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1039,
      "end": 1047,
      "loc": {
        "start": {
          "line": 27,
          "column": 91
        },
        "end": {
          "line": 27,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1047,
      "end": 1048,
      "loc": {
        "start": {
          "line": 27,
          "column": 99
        },
        "end": {
          "line": 27,
          "column": 100
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 1048,
      "end": 1049,
      "loc": {
        "start": {
          "line": 27,
          "column": 100
        },
        "end": {
          "line": 27,
          "column": 101
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1049,
      "end": 1050,
      "loc": {
        "start": {
          "line": 27,
          "column": 101
        },
        "end": {
          "line": 27,
          "column": 102
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1050,
      "end": 1051,
      "loc": {
        "start": {
          "line": 27,
          "column": 102
        },
        "end": {
          "line": 27,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1051,
      "end": 1053,
      "loc": {
        "start": {
          "line": 27,
          "column": 103
        },
        "end": {
          "line": 27,
          "column": 105
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1053,
      "end": 1054,
      "loc": {
        "start": {
          "line": 27,
          "column": 105
        },
        "end": {
          "line": 27,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1054,
      "end": 1055,
      "loc": {
        "start": {
          "line": 27,
          "column": 106
        },
        "end": {
          "line": 27,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 1056,
      "end": 1061,
      "loc": {
        "start": {
          "line": 27,
          "column": 108
        },
        "end": {
          "line": 27,
          "column": 113
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1061,
      "end": 1062,
      "loc": {
        "start": {
          "line": 27,
          "column": 113
        },
        "end": {
          "line": 27,
          "column": 114
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 1079,
      "end": 1083,
      "loc": {
        "start": {
          "line": 28,
          "column": 16
        },
        "end": {
          "line": 28,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticality",
      "start": 1084,
      "end": 1095,
      "loc": {
        "start": {
          "line": 28,
          "column": 21
        },
        "end": {
          "line": 28,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1095,
      "end": 1096,
      "loc": {
        "start": {
          "line": 28,
          "column": 32
        },
        "end": {
          "line": 28,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1096,
      "end": 1100,
      "loc": {
        "start": {
          "line": 28,
          "column": 33
        },
        "end": {
          "line": 28,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1100,
      "end": 1101,
      "loc": {
        "start": {
          "line": 28,
          "column": 37
        },
        "end": {
          "line": 28,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 1102,
      "end": 1106,
      "loc": {
        "start": {
          "line": 28,
          "column": 39
        },
        "end": {
          "line": 28,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1106,
      "end": 1107,
      "loc": {
        "start": {
          "line": 28,
          "column": 43
        },
        "end": {
          "line": 28,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 1107,
      "end": 1118,
      "loc": {
        "start": {
          "line": 28,
          "column": 44
        },
        "end": {
          "line": 28,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1118,
      "end": 1119,
      "loc": {
        "start": {
          "line": 28,
          "column": 55
        },
        "end": {
          "line": 28,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1119,
      "end": 1122,
      "loc": {
        "start": {
          "line": 28,
          "column": 56
        },
        "end": {
          "line": 28,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1122,
      "end": 1123,
      "loc": {
        "start": {
          "line": 28,
          "column": 59
        },
        "end": {
          "line": 28,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1123,
      "end": 1129,
      "loc": {
        "start": {
          "line": 28,
          "column": 60
        },
        "end": {
          "line": 28,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1129,
      "end": 1130,
      "loc": {
        "start": {
          "line": 28,
          "column": 66
        },
        "end": {
          "line": 28,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1130,
      "end": 1138,
      "loc": {
        "start": {
          "line": 28,
          "column": 67
        },
        "end": {
          "line": 28,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1138,
      "end": 1139,
      "loc": {
        "start": {
          "line": 28,
          "column": 75
        },
        "end": {
          "line": 28,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1139,
      "end": 1140,
      "loc": {
        "start": {
          "line": 28,
          "column": 76
        },
        "end": {
          "line": 28,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1140,
      "end": 1141,
      "loc": {
        "start": {
          "line": 28,
          "column": 77
        },
        "end": {
          "line": 28,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1141,
      "end": 1142,
      "loc": {
        "start": {
          "line": 28,
          "column": 78
        },
        "end": {
          "line": 28,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1142,
      "end": 1144,
      "loc": {
        "start": {
          "line": 28,
          "column": 79
        },
        "end": {
          "line": 28,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1144,
      "end": 1145,
      "loc": {
        "start": {
          "line": 28,
          "column": 81
        },
        "end": {
          "line": 28,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1145,
      "end": 1146,
      "loc": {
        "start": {
          "line": 28,
          "column": 82
        },
        "end": {
          "line": 28,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 1147,
      "end": 1152,
      "loc": {
        "start": {
          "line": 28,
          "column": 84
        },
        "end": {
          "line": 28,
          "column": 89
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1152,
      "end": 1153,
      "loc": {
        "start": {
          "line": 28,
          "column": 89
        },
        "end": {
          "line": 28,
          "column": 90
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 1170,
      "end": 1174,
      "loc": {
        "start": {
          "line": 29,
          "column": 16
        },
        "end": {
          "line": 29,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 1175,
      "end": 1188,
      "loc": {
        "start": {
          "line": 29,
          "column": 21
        },
        "end": {
          "line": 29,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1188,
      "end": 1189,
      "loc": {
        "start": {
          "line": 29,
          "column": 34
        },
        "end": {
          "line": 29,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1189,
      "end": 1193,
      "loc": {
        "start": {
          "line": 29,
          "column": 35
        },
        "end": {
          "line": 29,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1193,
      "end": 1194,
      "loc": {
        "start": {
          "line": 29,
          "column": 39
        },
        "end": {
          "line": 29,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 1195,
      "end": 1199,
      "loc": {
        "start": {
          "line": 29,
          "column": 41
        },
        "end": {
          "line": 29,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1199,
      "end": 1200,
      "loc": {
        "start": {
          "line": 29,
          "column": 45
        },
        "end": {
          "line": 29,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 1200,
      "end": 1213,
      "loc": {
        "start": {
          "line": 29,
          "column": 46
        },
        "end": {
          "line": 29,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1213,
      "end": 1214,
      "loc": {
        "start": {
          "line": 29,
          "column": 59
        },
        "end": {
          "line": 29,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1214,
      "end": 1217,
      "loc": {
        "start": {
          "line": 29,
          "column": 60
        },
        "end": {
          "line": 29,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1217,
      "end": 1218,
      "loc": {
        "start": {
          "line": 29,
          "column": 63
        },
        "end": {
          "line": 29,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1218,
      "end": 1224,
      "loc": {
        "start": {
          "line": 29,
          "column": 64
        },
        "end": {
          "line": 29,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1224,
      "end": 1225,
      "loc": {
        "start": {
          "line": 29,
          "column": 70
        },
        "end": {
          "line": 29,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1225,
      "end": 1233,
      "loc": {
        "start": {
          "line": 29,
          "column": 71
        },
        "end": {
          "line": 29,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1233,
      "end": 1234,
      "loc": {
        "start": {
          "line": 29,
          "column": 79
        },
        "end": {
          "line": 29,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1234,
      "end": 1235,
      "loc": {
        "start": {
          "line": 29,
          "column": 80
        },
        "end": {
          "line": 29,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1235,
      "end": 1236,
      "loc": {
        "start": {
          "line": 29,
          "column": 81
        },
        "end": {
          "line": 29,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1236,
      "end": 1237,
      "loc": {
        "start": {
          "line": 29,
          "column": 82
        },
        "end": {
          "line": 29,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1237,
      "end": 1239,
      "loc": {
        "start": {
          "line": 29,
          "column": 83
        },
        "end": {
          "line": 29,
          "column": 85
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1239,
      "end": 1240,
      "loc": {
        "start": {
          "line": 29,
          "column": 85
        },
        "end": {
          "line": 29,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1240,
      "end": 1241,
      "loc": {
        "start": {
          "line": 29,
          "column": 86
        },
        "end": {
          "line": 29,
          "column": 87
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 1242,
      "end": 1247,
      "loc": {
        "start": {
          "line": 29,
          "column": 88
        },
        "end": {
          "line": 29,
          "column": 93
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1247,
      "end": 1248,
      "loc": {
        "start": {
          "line": 29,
          "column": 93
        },
        "end": {
          "line": 29,
          "column": 94
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1261,
      "end": 1262,
      "loc": {
        "start": {
          "line": 30,
          "column": 12
        },
        "end": {
          "line": 30,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1271,
      "end": 1272,
      "loc": {
        "start": {
          "line": 31,
          "column": 8
        },
        "end": {
          "line": 31,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1277,
      "end": 1278,
      "loc": {
        "start": {
          "line": 32,
          "column": 4
        },
        "end": {
          "line": 32,
          "column": 5
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " add a new constraint to the internal buffer (if it is not excessive)",
      "start": 1284,
      "end": 1355,
      "loc": {
        "start": {
          "line": 34,
          "column": 4
        },
        "end": {
          "line": 34,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1360,
      "end": 1363,
      "loc": {
        "start": {
          "line": 35,
          "column": 4
        },
        "end": {
          "line": 35,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1363,
      "end": 1364,
      "loc": {
        "start": {
          "line": 35,
          "column": 7
        },
        "end": {
          "line": 35,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1364,
      "end": 1368,
      "loc": {
        "start": {
          "line": 35,
          "column": 8
        },
        "end": {
          "line": 35,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1368,
      "end": 1369,
      "loc": {
        "start": {
          "line": 35,
          "column": 12
        },
        "end": {
          "line": 35,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1370,
      "end": 1378,
      "loc": {
        "start": {
          "line": 35,
          "column": 14
        },
        "end": {
          "line": 35,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1378,
      "end": 1379,
      "loc": {
        "start": {
          "line": 35,
          "column": 22
        },
        "end": {
          "line": 35,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 1380,
      "end": 1385,
      "loc": {
        "start": {
          "line": 35,
          "column": 24
        },
        "end": {
          "line": 35,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1386,
      "end": 1387,
      "loc": {
        "start": {
          "line": 35,
          "column": 30
        },
        "end": {
          "line": 35,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1388,
      "end": 1389,
      "loc": {
        "start": {
          "line": 35,
          "column": 32
        },
        "end": {
          "line": 35,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1389,
      "end": 1390,
      "loc": {
        "start": {
          "line": 35,
          "column": 33
        },
        "end": {
          "line": 35,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1390,
      "end": 1391,
      "loc": {
        "start": {
          "line": 35,
          "column": 34
        },
        "end": {
          "line": 35,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1392,
      "end": 1393,
      "loc": {
        "start": {
          "line": 35,
          "column": 36
        },
        "end": {
          "line": 35,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1402,
      "end": 1404,
      "loc": {
        "start": {
          "line": 36,
          "column": 8
        },
        "end": {
          "line": 36,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1405,
      "end": 1406,
      "loc": {
        "start": {
          "line": 36,
          "column": 11
        },
        "end": {
          "line": 36,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1406,
      "end": 1410,
      "loc": {
        "start": {
          "line": 36,
          "column": 12
        },
        "end": {
          "line": 36,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1410,
      "end": 1411,
      "loc": {
        "start": {
          "line": 36,
          "column": 16
        },
        "end": {
          "line": 36,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1411,
      "end": 1415,
      "loc": {
        "start": {
          "line": 36,
          "column": 17
        },
        "end": {
          "line": 36,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 1416,
      "end": 1419,
      "loc": {
        "start": {
          "line": 36,
          "column": 22
        },
        "end": {
          "line": 36,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "undefined",
      "start": 1420,
      "end": 1429,
      "loc": {
        "start": {
          "line": 36,
          "column": 26
        },
        "end": {
          "line": 36,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1429,
      "end": 1430,
      "loc": {
        "start": {
          "line": 36,
          "column": 35
        },
        "end": {
          "line": 36,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1431,
      "end": 1435,
      "loc": {
        "start": {
          "line": 36,
          "column": 37
        },
        "end": {
          "line": 36,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1436,
      "end": 1437,
      "loc": {
        "start": {
          "line": 36,
          "column": 42
        },
        "end": {
          "line": 36,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1438,
      "end": 1442,
      "loc": {
        "start": {
          "line": 36,
          "column": 44
        },
        "end": {
          "line": 36,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1442,
      "end": 1443,
      "loc": {
        "start": {
          "line": 36,
          "column": 48
        },
        "end": {
          "line": 36,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1443,
      "end": 1447,
      "loc": {
        "start": {
          "line": 36,
          "column": 49
        },
        "end": {
          "line": 36,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1447,
      "end": 1448,
      "loc": {
        "start": {
          "line": 36,
          "column": 53
        },
        "end": {
          "line": 36,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 1457,
      "end": 1462,
      "loc": {
        "start": {
          "line": 37,
          "column": 8
        },
        "end": {
          "line": 37,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 1463,
      "end": 1473,
      "loc": {
        "start": {
          "line": 37,
          "column": 14
        },
        "end": {
          "line": 37,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1474,
      "end": 1475,
      "loc": {
        "start": {
          "line": 37,
          "column": 25
        },
        "end": {
          "line": 37,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1476,
      "end": 1477,
      "loc": {
        "start": {
          "line": 37,
          "column": 27
        },
        "end": {
          "line": 37,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 1477,
      "end": 1482,
      "loc": {
        "start": {
          "line": 37,
          "column": 28
        },
        "end": {
          "line": 37,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1482,
      "end": 1483,
      "loc": {
        "start": {
          "line": 37,
          "column": 33
        },
        "end": {
          "line": 37,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1484,
      "end": 1488,
      "loc": {
        "start": {
          "line": 37,
          "column": 35
        },
        "end": {
          "line": 37,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1488,
      "end": 1489,
      "loc": {
        "start": {
          "line": 37,
          "column": 39
        },
        "end": {
          "line": 37,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1490,
      "end": 1498,
      "loc": {
        "start": {
          "line": 37,
          "column": 41
        },
        "end": {
          "line": 37,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1498,
      "end": 1499,
      "loc": {
        "start": {
          "line": 37,
          "column": 49
        },
        "end": {
          "line": 37,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 1500,
      "end": 1505,
      "loc": {
        "start": {
          "line": 37,
          "column": 51
        },
        "end": {
          "line": 37,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1505,
      "end": 1506,
      "loc": {
        "start": {
          "line": 37,
          "column": 56
        },
        "end": {
          "line": 37,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1506,
      "end": 1507,
      "loc": {
        "start": {
          "line": 37,
          "column": 57
        },
        "end": {
          "line": 37,
          "column": 58
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " if a new constraint is not excessive, then take it into account",
      "start": 1516,
      "end": 1582,
      "loc": {
        "start": {
          "line": 38,
          "column": 8
        },
        "end": {
          "line": 38,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "switch",
        "keyword": "switch",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "switch",
      "start": 1591,
      "end": 1597,
      "loc": {
        "start": {
          "line": 39,
          "column": 8
        },
        "end": {
          "line": 39,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1598,
      "end": 1599,
      "loc": {
        "start": {
          "line": 39,
          "column": 15
        },
        "end": {
          "line": 39,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1599,
      "end": 1603,
      "loc": {
        "start": {
          "line": 39,
          "column": 16
        },
        "end": {
          "line": 39,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1603,
      "end": 1604,
      "loc": {
        "start": {
          "line": 39,
          "column": 20
        },
        "end": {
          "line": 39,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1605,
      "end": 1606,
      "loc": {
        "start": {
          "line": 39,
          "column": 22
        },
        "end": {
          "line": 39,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 1619,
      "end": 1623,
      "loc": {
        "start": {
          "line": 40,
          "column": 12
        },
        "end": {
          "line": 40,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidence",
      "start": 1624,
      "end": 1633,
      "loc": {
        "start": {
          "line": 40,
          "column": 17
        },
        "end": {
          "line": 40,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1633,
      "end": 1634,
      "loc": {
        "start": {
          "line": 40,
          "column": 26
        },
        "end": {
          "line": 40,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1634,
      "end": 1638,
      "loc": {
        "start": {
          "line": 40,
          "column": 27
        },
        "end": {
          "line": 40,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1638,
      "end": 1639,
      "loc": {
        "start": {
          "line": 40,
          "column": 31
        },
        "end": {
          "line": 40,
          "column": 32
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: implement more complicated handling of incidence",
      "start": 1656,
      "end": 1713,
      "loc": {
        "start": {
          "line": 41,
          "column": 16
        },
        "end": {
          "line": 41,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
      "start": 1730,
      "end": 1823,
      "loc": {
        "start": {
          "line": 42,
          "column": 16
        },
        "end": {
          "line": 42,
          "column": 109
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
      "start": 1840,
      "end": 1923,
      "loc": {
        "start": {
          "line": 43,
          "column": 16
        },
        "end": {
          "line": 43,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1940,
      "end": 1942,
      "loc": {
        "start": {
          "line": 44,
          "column": 16
        },
        "end": {
          "line": 44,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1943,
      "end": 1944,
      "loc": {
        "start": {
          "line": 44,
          "column": 19
        },
        "end": {
          "line": 44,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 1944,
      "end": 1948,
      "loc": {
        "start": {
          "line": 44,
          "column": 20
        },
        "end": {
          "line": 44,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1948,
      "end": 1949,
      "loc": {
        "start": {
          "line": 44,
          "column": 24
        },
        "end": {
          "line": 44,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 1949,
      "end": 1961,
      "loc": {
        "start": {
          "line": 44,
          "column": 25
        },
        "end": {
          "line": 44,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1961,
      "end": 1962,
      "loc": {
        "start": {
          "line": 44,
          "column": 37
        },
        "end": {
          "line": 44,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 1962,
      "end": 1969,
      "loc": {
        "start": {
          "line": 44,
          "column": 38
        },
        "end": {
          "line": 44,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1969,
      "end": 1970,
      "loc": {
        "start": {
          "line": 44,
          "column": 45
        },
        "end": {
          "line": 44,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1970,
      "end": 1978,
      "loc": {
        "start": {
          "line": 44,
          "column": 46
        },
        "end": {
          "line": 44,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1978,
      "end": 1979,
      "loc": {
        "start": {
          "line": 44,
          "column": 54
        },
        "end": {
          "line": 44,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1979,
      "end": 1980,
      "loc": {
        "start": {
          "line": 44,
          "column": 55
        },
        "end": {
          "line": 44,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1980,
      "end": 1981,
      "loc": {
        "start": {
          "line": 44,
          "column": 56
        },
        "end": {
          "line": 44,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1981,
      "end": 1982,
      "loc": {
        "start": {
          "line": 44,
          "column": 57
        },
        "end": {
          "line": 44,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1982,
      "end": 1984,
      "loc": {
        "start": {
          "line": 44,
          "column": 58
        },
        "end": {
          "line": 44,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1984,
      "end": 1985,
      "loc": {
        "start": {
          "line": 44,
          "column": 60
        },
        "end": {
          "line": 44,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 1986,
      "end": 1989,
      "loc": {
        "start": {
          "line": 44,
          "column": 62
        },
        "end": {
          "line": 44,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 1990,
      "end": 1994,
      "loc": {
        "start": {
          "line": 44,
          "column": 66
        },
        "end": {
          "line": 44,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1994,
      "end": 1995,
      "loc": {
        "start": {
          "line": 44,
          "column": 70
        },
        "end": {
          "line": 44,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 1995,
      "end": 2007,
      "loc": {
        "start": {
          "line": 44,
          "column": 71
        },
        "end": {
          "line": 44,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2007,
      "end": 2008,
      "loc": {
        "start": {
          "line": 44,
          "column": 83
        },
        "end": {
          "line": 44,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 2008,
      "end": 2015,
      "loc": {
        "start": {
          "line": 44,
          "column": 84
        },
        "end": {
          "line": 44,
          "column": 91
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2015,
      "end": 2016,
      "loc": {
        "start": {
          "line": 44,
          "column": 91
        },
        "end": {
          "line": 44,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2016,
      "end": 2024,
      "loc": {
        "start": {
          "line": 44,
          "column": 92
        },
        "end": {
          "line": 44,
          "column": 100
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2024,
      "end": 2025,
      "loc": {
        "start": {
          "line": 44,
          "column": 100
        },
        "end": {
          "line": 44,
          "column": 101
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 2025,
      "end": 2026,
      "loc": {
        "start": {
          "line": 44,
          "column": 101
        },
        "end": {
          "line": 44,
          "column": 102
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2026,
      "end": 2027,
      "loc": {
        "start": {
          "line": 44,
          "column": 102
        },
        "end": {
          "line": 44,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2027,
      "end": 2028,
      "loc": {
        "start": {
          "line": 44,
          "column": 103
        },
        "end": {
          "line": 44,
          "column": 104
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2028,
      "end": 2030,
      "loc": {
        "start": {
          "line": 44,
          "column": 104
        },
        "end": {
          "line": 44,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2030,
      "end": 2031,
      "loc": {
        "start": {
          "line": 44,
          "column": 106
        },
        "end": {
          "line": 44,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2031,
      "end": 2032,
      "loc": {
        "start": {
          "line": 44,
          "column": 107
        },
        "end": {
          "line": 44,
          "column": 108
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2053,
      "end": 2057,
      "loc": {
        "start": {
          "line": 45,
          "column": 20
        },
        "end": {
          "line": 45,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2057,
      "end": 2058,
      "loc": {
        "start": {
          "line": 45,
          "column": 24
        },
        "end": {
          "line": 45,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 2058,
      "end": 2070,
      "loc": {
        "start": {
          "line": 45,
          "column": 25
        },
        "end": {
          "line": 45,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2070,
      "end": 2071,
      "loc": {
        "start": {
          "line": 45,
          "column": 37
        },
        "end": {
          "line": 45,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 2071,
      "end": 2076,
      "loc": {
        "start": {
          "line": 45,
          "column": 38
        },
        "end": {
          "line": 45,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2076,
      "end": 2077,
      "loc": {
        "start": {
          "line": 45,
          "column": 43
        },
        "end": {
          "line": 45,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2077,
      "end": 2085,
      "loc": {
        "start": {
          "line": 45,
          "column": 44
        },
        "end": {
          "line": 45,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2085,
      "end": 2086,
      "loc": {
        "start": {
          "line": 45,
          "column": 52
        },
        "end": {
          "line": 45,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2086,
      "end": 2087,
      "loc": {
        "start": {
          "line": 45,
          "column": 53
        },
        "end": {
          "line": 45,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2087,
      "end": 2088,
      "loc": {
        "start": {
          "line": 45,
          "column": 54
        },
        "end": {
          "line": 45,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2088,
      "end": 2089,
      "loc": {
        "start": {
          "line": 45,
          "column": 55
        },
        "end": {
          "line": 45,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2089,
      "end": 2091,
      "loc": {
        "start": {
          "line": 45,
          "column": 56
        },
        "end": {
          "line": 45,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2091,
      "end": 2092,
      "loc": {
        "start": {
          "line": 45,
          "column": 58
        },
        "end": {
          "line": 45,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2093,
      "end": 2101,
      "loc": {
        "start": {
          "line": 45,
          "column": 60
        },
        "end": {
          "line": 45,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2101,
      "end": 2102,
      "loc": {
        "start": {
          "line": 45,
          "column": 68
        },
        "end": {
          "line": 45,
          "column": 69
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 2102,
      "end": 2103,
      "loc": {
        "start": {
          "line": 45,
          "column": 69
        },
        "end": {
          "line": 45,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2103,
      "end": 2104,
      "loc": {
        "start": {
          "line": 45,
          "column": 70
        },
        "end": {
          "line": 45,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2104,
      "end": 2105,
      "loc": {
        "start": {
          "line": 45,
          "column": 71
        },
        "end": {
          "line": 45,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2105,
      "end": 2107,
      "loc": {
        "start": {
          "line": 45,
          "column": 72
        },
        "end": {
          "line": 45,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2107,
      "end": 2108,
      "loc": {
        "start": {
          "line": 45,
          "column": 74
        },
        "end": {
          "line": 45,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2108,
      "end": 2109,
      "loc": {
        "start": {
          "line": 45,
          "column": 75
        },
        "end": {
          "line": 45,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "else",
        "keyword": "else",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "else",
      "start": 2126,
      "end": 2130,
      "loc": {
        "start": {
          "line": 46,
          "column": 16
        },
        "end": {
          "line": 46,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2151,
      "end": 2157,
      "loc": {
        "start": {
          "line": 47,
          "column": 20
        },
        "end": {
          "line": 47,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2157,
      "end": 2158,
      "loc": {
        "start": {
          "line": 47,
          "column": 26
        },
        "end": {
          "line": 47,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 2175,
      "end": 2180,
      "loc": {
        "start": {
          "line": 48,
          "column": 16
        },
        "end": {
          "line": 48,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2180,
      "end": 2181,
      "loc": {
        "start": {
          "line": 48,
          "column": 21
        },
        "end": {
          "line": 48,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 2194,
      "end": 2198,
      "loc": {
        "start": {
          "line": 49,
          "column": 12
        },
        "end": {
          "line": 49,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticality",
      "start": 2199,
      "end": 2210,
      "loc": {
        "start": {
          "line": 49,
          "column": 17
        },
        "end": {
          "line": 49,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2210,
      "end": 2211,
      "loc": {
        "start": {
          "line": 49,
          "column": 28
        },
        "end": {
          "line": 49,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 2211,
      "end": 2215,
      "loc": {
        "start": {
          "line": 49,
          "column": 29
        },
        "end": {
          "line": 49,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2215,
      "end": 2216,
      "loc": {
        "start": {
          "line": 49,
          "column": 33
        },
        "end": {
          "line": 49,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2233,
      "end": 2235,
      "loc": {
        "start": {
          "line": 50,
          "column": 16
        },
        "end": {
          "line": 50,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2236,
      "end": 2237,
      "loc": {
        "start": {
          "line": 50,
          "column": 19
        },
        "end": {
          "line": 50,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "prefix",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "!",
      "start": 2237,
      "end": 2238,
      "loc": {
        "start": {
          "line": 50,
          "column": 20
        },
        "end": {
          "line": 50,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2238,
      "end": 2242,
      "loc": {
        "start": {
          "line": 50,
          "column": 21
        },
        "end": {
          "line": 50,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2242,
      "end": 2243,
      "loc": {
        "start": {
          "line": 50,
          "column": 25
        },
        "end": {
          "line": 50,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 2243,
      "end": 2254,
      "loc": {
        "start": {
          "line": 50,
          "column": 26
        },
        "end": {
          "line": 50,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2254,
      "end": 2255,
      "loc": {
        "start": {
          "line": 50,
          "column": 37
        },
        "end": {
          "line": 50,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 2255,
      "end": 2258,
      "loc": {
        "start": {
          "line": 50,
          "column": 38
        },
        "end": {
          "line": 50,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2258,
      "end": 2259,
      "loc": {
        "start": {
          "line": 50,
          "column": 41
        },
        "end": {
          "line": 50,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2259,
      "end": 2267,
      "loc": {
        "start": {
          "line": 50,
          "column": 42
        },
        "end": {
          "line": 50,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2267,
      "end": 2268,
      "loc": {
        "start": {
          "line": 50,
          "column": 50
        },
        "end": {
          "line": 50,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2268,
      "end": 2269,
      "loc": {
        "start": {
          "line": 50,
          "column": 51
        },
        "end": {
          "line": 50,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2269,
      "end": 2270,
      "loc": {
        "start": {
          "line": 50,
          "column": 52
        },
        "end": {
          "line": 50,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2270,
      "end": 2271,
      "loc": {
        "start": {
          "line": 50,
          "column": 53
        },
        "end": {
          "line": 50,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2271,
      "end": 2273,
      "loc": {
        "start": {
          "line": 50,
          "column": 54
        },
        "end": {
          "line": 50,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2273,
      "end": 2274,
      "loc": {
        "start": {
          "line": 50,
          "column": 56
        },
        "end": {
          "line": 50,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2274,
      "end": 2275,
      "loc": {
        "start": {
          "line": 50,
          "column": 57
        },
        "end": {
          "line": 50,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2296,
      "end": 2300,
      "loc": {
        "start": {
          "line": 51,
          "column": 20
        },
        "end": {
          "line": 51,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2300,
      "end": 2301,
      "loc": {
        "start": {
          "line": 51,
          "column": 24
        },
        "end": {
          "line": 51,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 2301,
      "end": 2312,
      "loc": {
        "start": {
          "line": 51,
          "column": 25
        },
        "end": {
          "line": 51,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2312,
      "end": 2313,
      "loc": {
        "start": {
          "line": 51,
          "column": 36
        },
        "end": {
          "line": 51,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 2313,
      "end": 2316,
      "loc": {
        "start": {
          "line": 51,
          "column": 37
        },
        "end": {
          "line": 51,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2316,
      "end": 2317,
      "loc": {
        "start": {
          "line": 51,
          "column": 40
        },
        "end": {
          "line": 51,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2317,
      "end": 2325,
      "loc": {
        "start": {
          "line": 51,
          "column": 41
        },
        "end": {
          "line": 51,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2325,
      "end": 2326,
      "loc": {
        "start": {
          "line": 51,
          "column": 49
        },
        "end": {
          "line": 51,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2326,
      "end": 2327,
      "loc": {
        "start": {
          "line": 51,
          "column": 50
        },
        "end": {
          "line": 51,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2327,
      "end": 2328,
      "loc": {
        "start": {
          "line": 51,
          "column": 51
        },
        "end": {
          "line": 51,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2328,
      "end": 2329,
      "loc": {
        "start": {
          "line": 51,
          "column": 52
        },
        "end": {
          "line": 51,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2329,
      "end": 2331,
      "loc": {
        "start": {
          "line": 51,
          "column": 53
        },
        "end": {
          "line": 51,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2331,
      "end": 2332,
      "loc": {
        "start": {
          "line": 51,
          "column": 55
        },
        "end": {
          "line": 51,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2332,
      "end": 2333,
      "loc": {
        "start": {
          "line": 51,
          "column": 56
        },
        "end": {
          "line": 51,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": "else",
        "keyword": "else",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "else",
      "start": 2350,
      "end": 2354,
      "loc": {
        "start": {
          "line": 52,
          "column": 16
        },
        "end": {
          "line": 52,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2375,
      "end": 2381,
      "loc": {
        "start": {
          "line": 53,
          "column": 20
        },
        "end": {
          "line": 53,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2381,
      "end": 2382,
      "loc": {
        "start": {
          "line": 53,
          "column": 26
        },
        "end": {
          "line": 53,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 2399,
      "end": 2404,
      "loc": {
        "start": {
          "line": 54,
          "column": 16
        },
        "end": {
          "line": 54,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2404,
      "end": 2405,
      "loc": {
        "start": {
          "line": 54,
          "column": 21
        },
        "end": {
          "line": 54,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 2418,
      "end": 2422,
      "loc": {
        "start": {
          "line": 55,
          "column": 12
        },
        "end": {
          "line": 55,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 2423,
      "end": 2436,
      "loc": {
        "start": {
          "line": 55,
          "column": 17
        },
        "end": {
          "line": 55,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2436,
      "end": 2437,
      "loc": {
        "start": {
          "line": 55,
          "column": 30
        },
        "end": {
          "line": 55,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 2437,
      "end": 2441,
      "loc": {
        "start": {
          "line": 55,
          "column": 31
        },
        "end": {
          "line": 55,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2441,
      "end": 2442,
      "loc": {
        "start": {
          "line": 55,
          "column": 35
        },
        "end": {
          "line": 55,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2459,
      "end": 2461,
      "loc": {
        "start": {
          "line": 56,
          "column": 16
        },
        "end": {
          "line": 56,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2462,
      "end": 2463,
      "loc": {
        "start": {
          "line": 56,
          "column": 19
        },
        "end": {
          "line": 56,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "prefix",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "!",
      "start": 2463,
      "end": 2464,
      "loc": {
        "start": {
          "line": 56,
          "column": 20
        },
        "end": {
          "line": 56,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2464,
      "end": 2468,
      "loc": {
        "start": {
          "line": 56,
          "column": 21
        },
        "end": {
          "line": 56,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2468,
      "end": 2469,
      "loc": {
        "start": {
          "line": 56,
          "column": 25
        },
        "end": {
          "line": 56,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 2469,
      "end": 2482,
      "loc": {
        "start": {
          "line": 56,
          "column": 26
        },
        "end": {
          "line": 56,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2482,
      "end": 2483,
      "loc": {
        "start": {
          "line": 56,
          "column": 39
        },
        "end": {
          "line": 56,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 2483,
      "end": 2486,
      "loc": {
        "start": {
          "line": 56,
          "column": 40
        },
        "end": {
          "line": 56,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2486,
      "end": 2487,
      "loc": {
        "start": {
          "line": 56,
          "column": 43
        },
        "end": {
          "line": 56,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2487,
      "end": 2495,
      "loc": {
        "start": {
          "line": 56,
          "column": 44
        },
        "end": {
          "line": 56,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2495,
      "end": 2496,
      "loc": {
        "start": {
          "line": 56,
          "column": 52
        },
        "end": {
          "line": 56,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2496,
      "end": 2497,
      "loc": {
        "start": {
          "line": 56,
          "column": 53
        },
        "end": {
          "line": 56,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2497,
      "end": 2498,
      "loc": {
        "start": {
          "line": 56,
          "column": 54
        },
        "end": {
          "line": 56,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2498,
      "end": 2499,
      "loc": {
        "start": {
          "line": 56,
          "column": 55
        },
        "end": {
          "line": 56,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2499,
      "end": 2501,
      "loc": {
        "start": {
          "line": 56,
          "column": 56
        },
        "end": {
          "line": 56,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2501,
      "end": 2502,
      "loc": {
        "start": {
          "line": 56,
          "column": 58
        },
        "end": {
          "line": 56,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2502,
      "end": 2503,
      "loc": {
        "start": {
          "line": 56,
          "column": 59
        },
        "end": {
          "line": 56,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2524,
      "end": 2528,
      "loc": {
        "start": {
          "line": 57,
          "column": 20
        },
        "end": {
          "line": 57,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2528,
      "end": 2529,
      "loc": {
        "start": {
          "line": 57,
          "column": 24
        },
        "end": {
          "line": 57,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 2529,
      "end": 2542,
      "loc": {
        "start": {
          "line": 57,
          "column": 25
        },
        "end": {
          "line": 57,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2542,
      "end": 2543,
      "loc": {
        "start": {
          "line": 57,
          "column": 38
        },
        "end": {
          "line": 57,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 2543,
      "end": 2546,
      "loc": {
        "start": {
          "line": 57,
          "column": 39
        },
        "end": {
          "line": 57,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2546,
      "end": 2547,
      "loc": {
        "start": {
          "line": 57,
          "column": 42
        },
        "end": {
          "line": 57,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2547,
      "end": 2555,
      "loc": {
        "start": {
          "line": 57,
          "column": 43
        },
        "end": {
          "line": 57,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2555,
      "end": 2556,
      "loc": {
        "start": {
          "line": 57,
          "column": 51
        },
        "end": {
          "line": 57,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2556,
      "end": 2557,
      "loc": {
        "start": {
          "line": 57,
          "column": 52
        },
        "end": {
          "line": 57,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2557,
      "end": 2558,
      "loc": {
        "start": {
          "line": 57,
          "column": 53
        },
        "end": {
          "line": 57,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2558,
      "end": 2559,
      "loc": {
        "start": {
          "line": 57,
          "column": 54
        },
        "end": {
          "line": 57,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2559,
      "end": 2561,
      "loc": {
        "start": {
          "line": 57,
          "column": 55
        },
        "end": {
          "line": 57,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2561,
      "end": 2562,
      "loc": {
        "start": {
          "line": 57,
          "column": 57
        },
        "end": {
          "line": 57,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2562,
      "end": 2563,
      "loc": {
        "start": {
          "line": 57,
          "column": 58
        },
        "end": {
          "line": 57,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "else",
        "keyword": "else",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "else",
      "start": 2580,
      "end": 2584,
      "loc": {
        "start": {
          "line": 58,
          "column": 16
        },
        "end": {
          "line": 58,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2605,
      "end": 2611,
      "loc": {
        "start": {
          "line": 59,
          "column": 20
        },
        "end": {
          "line": 59,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2611,
      "end": 2612,
      "loc": {
        "start": {
          "line": 59,
          "column": 26
        },
        "end": {
          "line": 59,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 2629,
      "end": 2634,
      "loc": {
        "start": {
          "line": 60,
          "column": 16
        },
        "end": {
          "line": 60,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2634,
      "end": 2635,
      "loc": {
        "start": {
          "line": 60,
          "column": 21
        },
        "end": {
          "line": 60,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "default",
        "keyword": "default",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "default",
      "start": 2648,
      "end": 2655,
      "loc": {
        "start": {
          "line": 61,
          "column": 12
        },
        "end": {
          "line": 61,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2655,
      "end": 2656,
      "loc": {
        "start": {
          "line": 61,
          "column": 19
        },
        "end": {
          "line": 61,
          "column": 20
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: optimize this O(N) search",
      "start": 2673,
      "end": 2707,
      "loc": {
        "start": {
          "line": 62,
          "column": 16
        },
        "end": {
          "line": 62,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2724,
      "end": 2726,
      "loc": {
        "start": {
          "line": 63,
          "column": 16
        },
        "end": {
          "line": 63,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2727,
      "end": 2728,
      "loc": {
        "start": {
          "line": 63,
          "column": 19
        },
        "end": {
          "line": 63,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2728,
      "end": 2732,
      "loc": {
        "start": {
          "line": 63,
          "column": 20
        },
        "end": {
          "line": 63,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2732,
      "end": 2733,
      "loc": {
        "start": {
          "line": 63,
          "column": 24
        },
        "end": {
          "line": 63,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 2733,
      "end": 2744,
      "loc": {
        "start": {
          "line": 63,
          "column": 25
        },
        "end": {
          "line": 63,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2744,
      "end": 2745,
      "loc": {
        "start": {
          "line": 63,
          "column": 36
        },
        "end": {
          "line": 63,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "some",
      "start": 2745,
      "end": 2749,
      "loc": {
        "start": {
          "line": 63,
          "column": 37
        },
        "end": {
          "line": 63,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2749,
      "end": 2750,
      "loc": {
        "start": {
          "line": 63,
          "column": 41
        },
        "end": {
          "line": 63,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr",
      "start": 2750,
      "end": 2756,
      "loc": {
        "start": {
          "line": 63,
          "column": 42
        },
        "end": {
          "line": 63,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2757,
      "end": 2759,
      "loc": {
        "start": {
          "line": 63,
          "column": 49
        },
        "end": {
          "line": 63,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExcessive",
      "start": 2760,
      "end": 2771,
      "loc": {
        "start": {
          "line": 63,
          "column": 52
        },
        "end": {
          "line": 63,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2771,
      "end": 2772,
      "loc": {
        "start": {
          "line": 63,
          "column": 63
        },
        "end": {
          "line": 63,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2772,
      "end": 2782,
      "loc": {
        "start": {
          "line": 63,
          "column": 64
        },
        "end": {
          "line": 63,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2782,
      "end": 2783,
      "loc": {
        "start": {
          "line": 63,
          "column": 74
        },
        "end": {
          "line": 63,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr",
      "start": 2784,
      "end": 2790,
      "loc": {
        "start": {
          "line": 63,
          "column": 76
        },
        "end": {
          "line": 63,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2790,
      "end": 2791,
      "loc": {
        "start": {
          "line": 63,
          "column": 82
        },
        "end": {
          "line": 63,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2791,
      "end": 2792,
      "loc": {
        "start": {
          "line": 63,
          "column": 83
        },
        "end": {
          "line": 63,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2792,
      "end": 2793,
      "loc": {
        "start": {
          "line": 63,
          "column": 84
        },
        "end": {
          "line": 63,
          "column": 85
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2814,
      "end": 2820,
      "loc": {
        "start": {
          "line": 64,
          "column": 20
        },
        "end": {
          "line": 64,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2820,
      "end": 2821,
      "loc": {
        "start": {
          "line": 64,
          "column": 26
        },
        "end": {
          "line": 64,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "for",
        "keyword": "for",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": true,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "for",
      "start": 2838,
      "end": 2841,
      "loc": {
        "start": {
          "line": 65,
          "column": 16
        },
        "end": {
          "line": 65,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2842,
      "end": 2843,
      "loc": {
        "start": {
          "line": 65,
          "column": 20
        },
        "end": {
          "line": 65,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 2843,
      "end": 2846,
      "loc": {
        "start": {
          "line": 65,
          "column": 21
        },
        "end": {
          "line": 65,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 2847,
      "end": 2853,
      "loc": {
        "start": {
          "line": 65,
          "column": 25
        },
        "end": {
          "line": 65,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "of",
      "start": 2854,
      "end": 2856,
      "loc": {
        "start": {
          "line": 65,
          "column": 32
        },
        "end": {
          "line": 65,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 2857,
      "end": 2861,
      "loc": {
        "start": {
          "line": 65,
          "column": 35
        },
        "end": {
          "line": 65,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2861,
      "end": 2862,
      "loc": {
        "start": {
          "line": 65,
          "column": 39
        },
        "end": {
          "line": 65,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 2862,
      "end": 2868,
      "loc": {
        "start": {
          "line": 65,
          "column": 40
        },
        "end": {
          "line": 65,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2868,
      "end": 2869,
      "loc": {
        "start": {
          "line": 65,
          "column": 46
        },
        "end": {
          "line": 65,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "children",
      "start": 2869,
      "end": 2877,
      "loc": {
        "start": {
          "line": 65,
          "column": 47
        },
        "end": {
          "line": 65,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2877,
      "end": 2878,
      "loc": {
        "start": {
          "line": 65,
          "column": 55
        },
        "end": {
          "line": 65,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2899,
      "end": 2901,
      "loc": {
        "start": {
          "line": 66,
          "column": 20
        },
        "end": {
          "line": 66,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2902,
      "end": 2903,
      "loc": {
        "start": {
          "line": 66,
          "column": 23
        },
        "end": {
          "line": 66,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExcessive",
      "start": 2903,
      "end": 2914,
      "loc": {
        "start": {
          "line": 66,
          "column": 24
        },
        "end": {
          "line": 66,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2914,
      "end": 2915,
      "loc": {
        "start": {
          "line": 66,
          "column": 35
        },
        "end": {
          "line": 66,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2915,
      "end": 2925,
      "loc": {
        "start": {
          "line": 66,
          "column": 36
        },
        "end": {
          "line": 66,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2925,
      "end": 2926,
      "loc": {
        "start": {
          "line": 66,
          "column": 46
        },
        "end": {
          "line": 66,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 2927,
      "end": 2933,
      "loc": {
        "start": {
          "line": 66,
          "column": 48
        },
        "end": {
          "line": 66,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2933,
      "end": 2934,
      "loc": {
        "start": {
          "line": 66,
          "column": 54
        },
        "end": {
          "line": 66,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2934,
      "end": 2944,
      "loc": {
        "start": {
          "line": 66,
          "column": 55
        },
        "end": {
          "line": 66,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2944,
      "end": 2945,
      "loc": {
        "start": {
          "line": 66,
          "column": 65
        },
        "end": {
          "line": 66,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2945,
      "end": 2946,
      "loc": {
        "start": {
          "line": 66,
          "column": 66
        },
        "end": {
          "line": 66,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2971,
      "end": 2977,
      "loc": {
        "start": {
          "line": 67,
          "column": 24
        },
        "end": {
          "line": 67,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2977,
      "end": 2978,
      "loc": {
        "start": {
          "line": 67,
          "column": 30
        },
        "end": {
          "line": 67,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "break",
        "keyword": "break",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "break",
      "start": 2995,
      "end": 3000,
      "loc": {
        "start": {
          "line": 68,
          "column": 16
        },
        "end": {
          "line": 68,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3000,
      "end": 3001,
      "loc": {
        "start": {
          "line": 68,
          "column": 21
        },
        "end": {
          "line": 68,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3010,
      "end": 3011,
      "loc": {
        "start": {
          "line": 69,
          "column": 8
        },
        "end": {
          "line": 69,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 3020,
      "end": 3024,
      "loc": {
        "start": {
          "line": 70,
          "column": 8
        },
        "end": {
          "line": 70,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3024,
      "end": 3025,
      "loc": {
        "start": {
          "line": 70,
          "column": 12
        },
        "end": {
          "line": 70,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 3025,
      "end": 3036,
      "loc": {
        "start": {
          "line": 70,
          "column": 13
        },
        "end": {
          "line": 70,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3036,
      "end": 3037,
      "loc": {
        "start": {
          "line": 70,
          "column": 24
        },
        "end": {
          "line": 70,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "push",
      "start": 3037,
      "end": 3041,
      "loc": {
        "start": {
          "line": 70,
          "column": 25
        },
        "end": {
          "line": 70,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3041,
      "end": 3042,
      "loc": {
        "start": {
          "line": 70,
          "column": 29
        },
        "end": {
          "line": 70,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 3042,
      "end": 3052,
      "loc": {
        "start": {
          "line": 70,
          "column": 30
        },
        "end": {
          "line": 70,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3052,
      "end": 3053,
      "loc": {
        "start": {
          "line": 70,
          "column": 40
        },
        "end": {
          "line": 70,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3053,
      "end": 3054,
      "loc": {
        "start": {
          "line": 70,
          "column": 41
        },
        "end": {
          "line": 70,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3059,
      "end": 3060,
      "loc": {
        "start": {
          "line": 71,
          "column": 4
        },
        "end": {
          "line": 71,
          "column": 5
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " return constraint statements in the internal buffer, clear the buffer",
      "start": 3066,
      "end": 3138,
      "loc": {
        "start": {
          "line": 73,
          "column": 4
        },
        "end": {
          "line": 73,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "commit",
      "start": 3143,
      "end": 3149,
      "loc": {
        "start": {
          "line": 74,
          "column": 4
        },
        "end": {
          "line": 74,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3149,
      "end": 3150,
      "loc": {
        "start": {
          "line": 74,
          "column": 10
        },
        "end": {
          "line": 74,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3150,
      "end": 3151,
      "loc": {
        "start": {
          "line": 74,
          "column": 11
        },
        "end": {
          "line": 74,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3152,
      "end": 3153,
      "loc": {
        "start": {
          "line": 74,
          "column": 13
        },
        "end": {
          "line": 74,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 3162,
      "end": 3167,
      "loc": {
        "start": {
          "line": 75,
          "column": 8
        },
        "end": {
          "line": 75,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "statements",
      "start": 3168,
      "end": 3178,
      "loc": {
        "start": {
          "line": 75,
          "column": 14
        },
        "end": {
          "line": 75,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3179,
      "end": 3180,
      "loc": {
        "start": {
          "line": 75,
          "column": 25
        },
        "end": {
          "line": 75,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 3181,
      "end": 3185,
      "loc": {
        "start": {
          "line": 75,
          "column": 27
        },
        "end": {
          "line": 75,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3185,
      "end": 3186,
      "loc": {
        "start": {
          "line": 75,
          "column": 31
        },
        "end": {
          "line": 75,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 3186,
      "end": 3197,
      "loc": {
        "start": {
          "line": 75,
          "column": 32
        },
        "end": {
          "line": 75,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3197,
      "end": 3198,
      "loc": {
        "start": {
          "line": 75,
          "column": 43
        },
        "end": {
          "line": 75,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "map",
      "start": 3198,
      "end": 3201,
      "loc": {
        "start": {
          "line": 75,
          "column": 44
        },
        "end": {
          "line": 75,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3201,
      "end": 3202,
      "loc": {
        "start": {
          "line": 75,
          "column": 47
        },
        "end": {
          "line": 75,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 3202,
      "end": 3212,
      "loc": {
        "start": {
          "line": 75,
          "column": 48
        },
        "end": {
          "line": 75,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3213,
      "end": 3215,
      "loc": {
        "start": {
          "line": 75,
          "column": 59
        },
        "end": {
          "line": 75,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addCommand",
      "start": 3216,
      "end": 3226,
      "loc": {
        "start": {
          "line": 75,
          "column": 62
        },
        "end": {
          "line": 75,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3226,
      "end": 3227,
      "loc": {
        "start": {
          "line": 75,
          "column": 72
        },
        "end": {
          "line": 75,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 3227,
      "end": 3231,
      "loc": {
        "start": {
          "line": 75,
          "column": 73
        },
        "end": {
          "line": 75,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3231,
      "end": 3232,
      "loc": {
        "start": {
          "line": 75,
          "column": 77
        },
        "end": {
          "line": 75,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 3232,
      "end": 3238,
      "loc": {
        "start": {
          "line": 75,
          "column": 78
        },
        "end": {
          "line": 75,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3238,
      "end": 3239,
      "loc": {
        "start": {
          "line": 75,
          "column": 84
        },
        "end": {
          "line": 75,
          "column": 85
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 3240,
      "end": 3250,
      "loc": {
        "start": {
          "line": 75,
          "column": 86
        },
        "end": {
          "line": 75,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3250,
      "end": 3251,
      "loc": {
        "start": {
          "line": 75,
          "column": 96
        },
        "end": {
          "line": 75,
          "column": 97
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3251,
      "end": 3252,
      "loc": {
        "start": {
          "line": 75,
          "column": 97
        },
        "end": {
          "line": 75,
          "column": 98
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3252,
      "end": 3253,
      "loc": {
        "start": {
          "line": 75,
          "column": 98
        },
        "end": {
          "line": 75,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 3262,
      "end": 3266,
      "loc": {
        "start": {
          "line": 76,
          "column": 8
        },
        "end": {
          "line": 76,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3266,
      "end": 3267,
      "loc": {
        "start": {
          "line": 76,
          "column": 12
        },
        "end": {
          "line": 76,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 3267,
      "end": 3278,
      "loc": {
        "start": {
          "line": 76,
          "column": 13
        },
        "end": {
          "line": 76,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3279,
      "end": 3280,
      "loc": {
        "start": {
          "line": 76,
          "column": 25
        },
        "end": {
          "line": 76,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3281,
      "end": 3282,
      "loc": {
        "start": {
          "line": 76,
          "column": 27
        },
        "end": {
          "line": 76,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3282,
      "end": 3283,
      "loc": {
        "start": {
          "line": 76,
          "column": 28
        },
        "end": {
          "line": 76,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3283,
      "end": 3284,
      "loc": {
        "start": {
          "line": 76,
          "column": 29
        },
        "end": {
          "line": 76,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3293,
      "end": 3299,
      "loc": {
        "start": {
          "line": 77,
          "column": 8
        },
        "end": {
          "line": 77,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "statements",
      "start": 3300,
      "end": 3310,
      "loc": {
        "start": {
          "line": 77,
          "column": 15
        },
        "end": {
          "line": 77,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3310,
      "end": 3311,
      "loc": {
        "start": {
          "line": 77,
          "column": 25
        },
        "end": {
          "line": 77,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3316,
      "end": 3317,
      "loc": {
        "start": {
          "line": 78,
          "column": 4
        },
        "end": {
          "line": 78,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3318,
      "end": 3319,
      "loc": {
        "start": {
          "line": 79,
          "column": 0
        },
        "end": {
          "line": 79,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 3321,
      "end": 3329,
      "loc": {
        "start": {
          "line": 81,
          "column": 0
        },
        "end": {
          "line": 81,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExcessive",
      "start": 3330,
      "end": 3341,
      "loc": {
        "start": {
          "line": 81,
          "column": 9
        },
        "end": {
          "line": 81,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3341,
      "end": 3342,
      "loc": {
        "start": {
          "line": 81,
          "column": 20
        },
        "end": {
          "line": 81,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3342,
      "end": 3349,
      "loc": {
        "start": {
          "line": 81,
          "column": 21
        },
        "end": {
          "line": 81,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3349,
      "end": 3350,
      "loc": {
        "start": {
          "line": 81,
          "column": 28
        },
        "end": {
          "line": 81,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3351,
      "end": 3358,
      "loc": {
        "start": {
          "line": 81,
          "column": 30
        },
        "end": {
          "line": 81,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3358,
      "end": 3359,
      "loc": {
        "start": {
          "line": 81,
          "column": 37
        },
        "end": {
          "line": 81,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3360,
      "end": 3361,
      "loc": {
        "start": {
          "line": 81,
          "column": 39
        },
        "end": {
          "line": 81,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3366,
      "end": 3368,
      "loc": {
        "start": {
          "line": 82,
          "column": 4
        },
        "end": {
          "line": 82,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3369,
      "end": 3370,
      "loc": {
        "start": {
          "line": 82,
          "column": 7
        },
        "end": {
          "line": 82,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3370,
      "end": 3377,
      "loc": {
        "start": {
          "line": 82,
          "column": 8
        },
        "end": {
          "line": 82,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3377,
      "end": 3378,
      "loc": {
        "start": {
          "line": 82,
          "column": 15
        },
        "end": {
          "line": 82,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 3378,
      "end": 3383,
      "loc": {
        "start": {
          "line": 82,
          "column": 16
        },
        "end": {
          "line": 82,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 3384,
      "end": 3387,
      "loc": {
        "start": {
          "line": 82,
          "column": 22
        },
        "end": {
          "line": 82,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3388,
      "end": 3395,
      "loc": {
        "start": {
          "line": 82,
          "column": 26
        },
        "end": {
          "line": 82,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3395,
      "end": 3396,
      "loc": {
        "start": {
          "line": 82,
          "column": 33
        },
        "end": {
          "line": 82,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 3396,
      "end": 3401,
      "loc": {
        "start": {
          "line": 82,
          "column": 34
        },
        "end": {
          "line": 82,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3401,
      "end": 3402,
      "loc": {
        "start": {
          "line": 82,
          "column": 39
        },
        "end": {
          "line": 82,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3411,
      "end": 3417,
      "loc": {
        "start": {
          "line": 83,
          "column": 8
        },
        "end": {
          "line": 83,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 3418,
      "end": 3423,
      "loc": {
        "start": {
          "line": 83,
          "column": 15
        },
        "end": {
          "line": 83,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3423,
      "end": 3424,
      "loc": {
        "start": {
          "line": 83,
          "column": 20
        },
        "end": {
          "line": 83,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3429,
      "end": 3431,
      "loc": {
        "start": {
          "line": 84,
          "column": 4
        },
        "end": {
          "line": 84,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3432,
      "end": 3433,
      "loc": {
        "start": {
          "line": 84,
          "column": 7
        },
        "end": {
          "line": 84,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3433,
      "end": 3440,
      "loc": {
        "start": {
          "line": 84,
          "column": 8
        },
        "end": {
          "line": 84,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3440,
      "end": 3441,
      "loc": {
        "start": {
          "line": 84,
          "column": 15
        },
        "end": {
          "line": 84,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3441,
      "end": 3449,
      "loc": {
        "start": {
          "line": 84,
          "column": 16
        },
        "end": {
          "line": 84,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3449,
      "end": 3450,
      "loc": {
        "start": {
          "line": 84,
          "column": 24
        },
        "end": {
          "line": 84,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "length",
      "start": 3450,
      "end": 3456,
      "loc": {
        "start": {
          "line": 84,
          "column": 25
        },
        "end": {
          "line": 84,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 3457,
      "end": 3460,
      "loc": {
        "start": {
          "line": 84,
          "column": 32
        },
        "end": {
          "line": 84,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3461,
      "end": 3468,
      "loc": {
        "start": {
          "line": 84,
          "column": 36
        },
        "end": {
          "line": 84,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3468,
      "end": 3469,
      "loc": {
        "start": {
          "line": 84,
          "column": 43
        },
        "end": {
          "line": 84,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3469,
      "end": 3477,
      "loc": {
        "start": {
          "line": 84,
          "column": 44
        },
        "end": {
          "line": 84,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3477,
      "end": 3478,
      "loc": {
        "start": {
          "line": 84,
          "column": 52
        },
        "end": {
          "line": 84,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "length",
      "start": 3478,
      "end": 3484,
      "loc": {
        "start": {
          "line": 84,
          "column": 53
        },
        "end": {
          "line": 84,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3484,
      "end": 3485,
      "loc": {
        "start": {
          "line": 84,
          "column": 59
        },
        "end": {
          "line": 84,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3494,
      "end": 3500,
      "loc": {
        "start": {
          "line": 85,
          "column": 8
        },
        "end": {
          "line": 85,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 3501,
      "end": 3506,
      "loc": {
        "start": {
          "line": 85,
          "column": 15
        },
        "end": {
          "line": 85,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3506,
      "end": 3507,
      "loc": {
        "start": {
          "line": 85,
          "column": 20
        },
        "end": {
          "line": 85,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3512,
      "end": 3514,
      "loc": {
        "start": {
          "line": 86,
          "column": 4
        },
        "end": {
          "line": 86,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3515,
      "end": 3516,
      "loc": {
        "start": {
          "line": 86,
          "column": 7
        },
        "end": {
          "line": 86,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3516,
      "end": 3523,
      "loc": {
        "start": {
          "line": 86,
          "column": 8
        },
        "end": {
          "line": 86,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3523,
      "end": 3524,
      "loc": {
        "start": {
          "line": 86,
          "column": 15
        },
        "end": {
          "line": 86,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3524,
      "end": 3529,
      "loc": {
        "start": {
          "line": 86,
          "column": 16
        },
        "end": {
          "line": 86,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3529,
      "end": 3530,
      "loc": {
        "start": {
          "line": 86,
          "column": 21
        },
        "end": {
          "line": 86,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3530,
      "end": 3535,
      "loc": {
        "start": {
          "line": 86,
          "column": 22
        },
        "end": {
          "line": 86,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3536,
      "end": 3538,
      "loc": {
        "start": {
          "line": 86,
          "column": 28
        },
        "end": {
          "line": 86,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3539,
      "end": 3546,
      "loc": {
        "start": {
          "line": 86,
          "column": 31
        },
        "end": {
          "line": 86,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3546,
      "end": 3547,
      "loc": {
        "start": {
          "line": 86,
          "column": 38
        },
        "end": {
          "line": 86,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3547,
      "end": 3552,
      "loc": {
        "start": {
          "line": 86,
          "column": 39
        },
        "end": {
          "line": 86,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3552,
      "end": 3553,
      "loc": {
        "start": {
          "line": 86,
          "column": 44
        },
        "end": {
          "line": 86,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3553,
      "end": 3558,
      "loc": {
        "start": {
          "line": 86,
          "column": 45
        },
        "end": {
          "line": 86,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3559,
      "end": 3561,
      "loc": {
        "start": {
          "line": 86,
          "column": 51
        },
        "end": {
          "line": 86,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3562,
      "end": 3569,
      "loc": {
        "start": {
          "line": 86,
          "column": 54
        },
        "end": {
          "line": 86,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3569,
      "end": 3570,
      "loc": {
        "start": {
          "line": 86,
          "column": 61
        },
        "end": {
          "line": 86,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3570,
      "end": 3575,
      "loc": {
        "start": {
          "line": 86,
          "column": 62
        },
        "end": {
          "line": 86,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3575,
      "end": 3576,
      "loc": {
        "start": {
          "line": 86,
          "column": 67
        },
        "end": {
          "line": 86,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "expression",
      "start": 3576,
      "end": 3586,
      "loc": {
        "start": {
          "line": 86,
          "column": 68
        },
        "end": {
          "line": 86,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3587,
      "end": 3589,
      "loc": {
        "start": {
          "line": 86,
          "column": 79
        },
        "end": {
          "line": 86,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3590,
      "end": 3597,
      "loc": {
        "start": {
          "line": 86,
          "column": 82
        },
        "end": {
          "line": 86,
          "column": 89
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3597,
      "end": 3598,
      "loc": {
        "start": {
          "line": 86,
          "column": 89
        },
        "end": {
          "line": 86,
          "column": 90
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3598,
      "end": 3603,
      "loc": {
        "start": {
          "line": 86,
          "column": 90
        },
        "end": {
          "line": 86,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3603,
      "end": 3604,
      "loc": {
        "start": {
          "line": 86,
          "column": 95
        },
        "end": {
          "line": 86,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "expression",
      "start": 3604,
      "end": 3614,
      "loc": {
        "start": {
          "line": 86,
          "column": 96
        },
        "end": {
          "line": 86,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3614,
      "end": 3615,
      "loc": {
        "start": {
          "line": 86,
          "column": 106
        },
        "end": {
          "line": 86,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3624,
      "end": 3630,
      "loc": {
        "start": {
          "line": 87,
          "column": 8
        },
        "end": {
          "line": 87,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 3631,
      "end": 3636,
      "loc": {
        "start": {
          "line": 87,
          "column": 15
        },
        "end": {
          "line": 87,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3636,
      "end": 3637,
      "loc": {
        "start": {
          "line": 87,
          "column": 20
        },
        "end": {
          "line": 87,
          "column": 21
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " ignore parametric constraints",
      "start": 3638,
      "end": 3670,
      "loc": {
        "start": {
          "line": 87,
          "column": 22
        },
        "end": {
          "line": 87,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3675,
      "end": 3677,
      "loc": {
        "start": {
          "line": 88,
          "column": 4
        },
        "end": {
          "line": 88,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3678,
      "end": 3679,
      "loc": {
        "start": {
          "line": 88,
          "column": 7
        },
        "end": {
          "line": 88,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3679,
      "end": 3686,
      "loc": {
        "start": {
          "line": 88,
          "column": 8
        },
        "end": {
          "line": 88,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3686,
      "end": 3687,
      "loc": {
        "start": {
          "line": 88,
          "column": 15
        },
        "end": {
          "line": 88,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3687,
      "end": 3695,
      "loc": {
        "start": {
          "line": 88,
          "column": 16
        },
        "end": {
          "line": 88,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3695,
      "end": 3696,
      "loc": {
        "start": {
          "line": 88,
          "column": 24
        },
        "end": {
          "line": 88,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "every",
      "start": 3696,
      "end": 3701,
      "loc": {
        "start": {
          "line": 88,
          "column": 25
        },
        "end": {
          "line": 88,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3701,
      "end": 3702,
      "loc": {
        "start": {
          "line": 88,
          "column": 30
        },
        "end": {
          "line": 88,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3702,
      "end": 3703,
      "loc": {
        "start": {
          "line": 88,
          "column": 31
        },
        "end": {
          "line": 88,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3703,
      "end": 3706,
      "loc": {
        "start": {
          "line": 88,
          "column": 32
        },
        "end": {
          "line": 88,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3706,
      "end": 3707,
      "loc": {
        "start": {
          "line": 88,
          "column": 35
        },
        "end": {
          "line": 88,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3708,
      "end": 3711,
      "loc": {
        "start": {
          "line": 88,
          "column": 37
        },
        "end": {
          "line": 88,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3711,
      "end": 3712,
      "loc": {
        "start": {
          "line": 88,
          "column": 40
        },
        "end": {
          "line": 88,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3713,
      "end": 3715,
      "loc": {
        "start": {
          "line": 88,
          "column": 42
        },
        "end": {
          "line": 88,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3716,
      "end": 3719,
      "loc": {
        "start": {
          "line": 88,
          "column": 45
        },
        "end": {
          "line": 88,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3719,
      "end": 3720,
      "loc": {
        "start": {
          "line": 88,
          "column": 48
        },
        "end": {
          "line": 88,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3720,
      "end": 3722,
      "loc": {
        "start": {
          "line": 88,
          "column": 49
        },
        "end": {
          "line": 88,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3723,
      "end": 3726,
      "loc": {
        "start": {
          "line": 88,
          "column": 52
        },
        "end": {
          "line": 88,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3727,
      "end": 3734,
      "loc": {
        "start": {
          "line": 88,
          "column": 56
        },
        "end": {
          "line": 88,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3734,
      "end": 3735,
      "loc": {
        "start": {
          "line": 88,
          "column": 63
        },
        "end": {
          "line": 88,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3735,
      "end": 3743,
      "loc": {
        "start": {
          "line": 88,
          "column": 64
        },
        "end": {
          "line": 88,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3743,
      "end": 3744,
      "loc": {
        "start": {
          "line": 88,
          "column": 72
        },
        "end": {
          "line": 88,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3744,
      "end": 3747,
      "loc": {
        "start": {
          "line": 88,
          "column": 73
        },
        "end": {
          "line": 88,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3747,
      "end": 3748,
      "loc": {
        "start": {
          "line": 88,
          "column": 76
        },
        "end": {
          "line": 88,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3748,
      "end": 3749,
      "loc": {
        "start": {
          "line": 88,
          "column": 77
        },
        "end": {
          "line": 88,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3749,
      "end": 3751,
      "loc": {
        "start": {
          "line": 88,
          "column": 78
        },
        "end": {
          "line": 88,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3751,
      "end": 3752,
      "loc": {
        "start": {
          "line": 88,
          "column": 80
        },
        "end": {
          "line": 88,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3752,
      "end": 3753,
      "loc": {
        "start": {
          "line": 88,
          "column": 81
        },
        "end": {
          "line": 88,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3762,
      "end": 3768,
      "loc": {
        "start": {
          "line": 89,
          "column": 8
        },
        "end": {
          "line": 89,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "true",
        "keyword": "true",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "true",
      "start": 3769,
      "end": 3773,
      "loc": {
        "start": {
          "line": 89,
          "column": 15
        },
        "end": {
          "line": 89,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3773,
      "end": 3774,
      "loc": {
        "start": {
          "line": 89,
          "column": 19
        },
        "end": {
          "line": 89,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 3779,
      "end": 3784,
      "loc": {
        "start": {
          "line": 90,
          "column": 4
        },
        "end": {
          "line": 90,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isBinaryCommutative",
      "start": 3785,
      "end": 3804,
      "loc": {
        "start": {
          "line": 90,
          "column": 10
        },
        "end": {
          "line": 90,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3805,
      "end": 3806,
      "loc": {
        "start": {
          "line": 90,
          "column": 30
        },
        "end": {
          "line": 90,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Constraint",
      "start": 3807,
      "end": 3817,
      "loc": {
        "start": {
          "line": 90,
          "column": 32
        },
        "end": {
          "line": 90,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3817,
      "end": 3818,
      "loc": {
        "start": {
          "line": 90,
          "column": 42
        },
        "end": {
          "line": 90,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3818,
      "end": 3825,
      "loc": {
        "start": {
          "line": 90,
          "column": 43
        },
        "end": {
          "line": 90,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3825,
      "end": 3826,
      "loc": {
        "start": {
          "line": 90,
          "column": 50
        },
        "end": {
          "line": 90,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 3826,
      "end": 3831,
      "loc": {
        "start": {
          "line": 90,
          "column": 51
        },
        "end": {
          "line": 90,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3831,
      "end": 3832,
      "loc": {
        "start": {
          "line": 90,
          "column": 56
        },
        "end": {
          "line": 90,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3832,
      "end": 3833,
      "loc": {
        "start": {
          "line": 90,
          "column": 57
        },
        "end": {
          "line": 90,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isCommutative",
      "start": 3833,
      "end": 3846,
      "loc": {
        "start": {
          "line": 90,
          "column": 58
        },
        "end": {
          "line": 90,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3846,
      "end": 3847,
      "loc": {
        "start": {
          "line": 90,
          "column": 71
        },
        "end": {
          "line": 90,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3852,
      "end": 3854,
      "loc": {
        "start": {
          "line": 91,
          "column": 4
        },
        "end": {
          "line": 91,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3855,
      "end": 3856,
      "loc": {
        "start": {
          "line": 91,
          "column": 7
        },
        "end": {
          "line": 91,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isBinaryCommutative",
      "start": 3856,
      "end": 3875,
      "loc": {
        "start": {
          "line": 91,
          "column": 8
        },
        "end": {
          "line": 91,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3876,
      "end": 3878,
      "loc": {
        "start": {
          "line": 91,
          "column": 28
        },
        "end": {
          "line": 91,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3879,
      "end": 3886,
      "loc": {
        "start": {
          "line": 91,
          "column": 31
        },
        "end": {
          "line": 91,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3886,
      "end": 3887,
      "loc": {
        "start": {
          "line": 91,
          "column": 38
        },
        "end": {
          "line": 91,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3887,
      "end": 3895,
      "loc": {
        "start": {
          "line": 91,
          "column": 39
        },
        "end": {
          "line": 91,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3895,
      "end": 3896,
      "loc": {
        "start": {
          "line": 91,
          "column": 47
        },
        "end": {
          "line": 91,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "every",
      "start": 3896,
      "end": 3901,
      "loc": {
        "start": {
          "line": 91,
          "column": 48
        },
        "end": {
          "line": 91,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3901,
      "end": 3902,
      "loc": {
        "start": {
          "line": 91,
          "column": 53
        },
        "end": {
          "line": 91,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3902,
      "end": 3903,
      "loc": {
        "start": {
          "line": 91,
          "column": 54
        },
        "end": {
          "line": 91,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3903,
      "end": 3906,
      "loc": {
        "start": {
          "line": 91,
          "column": 55
        },
        "end": {
          "line": 91,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3906,
      "end": 3907,
      "loc": {
        "start": {
          "line": 91,
          "column": 58
        },
        "end": {
          "line": 91,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3908,
      "end": 3911,
      "loc": {
        "start": {
          "line": 91,
          "column": 60
        },
        "end": {
          "line": 91,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3911,
      "end": 3912,
      "loc": {
        "start": {
          "line": 91,
          "column": 63
        },
        "end": {
          "line": 91,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3913,
      "end": 3915,
      "loc": {
        "start": {
          "line": 91,
          "column": 65
        },
        "end": {
          "line": 91,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3916,
      "end": 3919,
      "loc": {
        "start": {
          "line": 91,
          "column": 68
        },
        "end": {
          "line": 91,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3919,
      "end": 3920,
      "loc": {
        "start": {
          "line": 91,
          "column": 71
        },
        "end": {
          "line": 91,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3920,
      "end": 3922,
      "loc": {
        "start": {
          "line": 91,
          "column": 72
        },
        "end": {
          "line": 91,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3923,
      "end": 3926,
      "loc": {
        "start": {
          "line": 91,
          "column": 75
        },
        "end": {
          "line": 91,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3927,
      "end": 3934,
      "loc": {
        "start": {
          "line": 91,
          "column": 79
        },
        "end": {
          "line": 91,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3934,
      "end": 3935,
      "loc": {
        "start": {
          "line": 91,
          "column": 86
        },
        "end": {
          "line": 91,
          "column": 87
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3935,
      "end": 3943,
      "loc": {
        "start": {
          "line": 91,
          "column": 87
        },
        "end": {
          "line": 91,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3943,
      "end": 3944,
      "loc": {
        "start": {
          "line": 91,
          "column": 95
        },
        "end": {
          "line": 91,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 3944,
      "end": 3945,
      "loc": {
        "start": {
          "line": 91,
          "column": 96
        },
        "end": {
          "line": 91,
          "column": 97
        }
      }
    },
    {
      "type": {
        "label": "+/-",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": 9,
        "updateContext": null
      },
      "value": "-",
      "start": 3946,
      "end": 3947,
      "loc": {
        "start": {
          "line": 91,
          "column": 98
        },
        "end": {
          "line": 91,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3948,
      "end": 3951,
      "loc": {
        "start": {
          "line": 91,
          "column": 100
        },
        "end": {
          "line": 91,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3951,
      "end": 3952,
      "loc": {
        "start": {
          "line": 91,
          "column": 103
        },
        "end": {
          "line": 91,
          "column": 104
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3952,
      "end": 3953,
      "loc": {
        "start": {
          "line": 91,
          "column": 104
        },
        "end": {
          "line": 91,
          "column": 105
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3953,
      "end": 3955,
      "loc": {
        "start": {
          "line": 91,
          "column": 105
        },
        "end": {
          "line": 91,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3955,
      "end": 3956,
      "loc": {
        "start": {
          "line": 91,
          "column": 107
        },
        "end": {
          "line": 91,
          "column": 108
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3956,
      "end": 3957,
      "loc": {
        "start": {
          "line": 91,
          "column": 108
        },
        "end": {
          "line": 91,
          "column": 109
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3966,
      "end": 3972,
      "loc": {
        "start": {
          "line": 92,
          "column": 8
        },
        "end": {
          "line": 92,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "true",
        "keyword": "true",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "true",
      "start": 3973,
      "end": 3977,
      "loc": {
        "start": {
          "line": 92,
          "column": 15
        },
        "end": {
          "line": 92,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3977,
      "end": 3978,
      "loc": {
        "start": {
          "line": 92,
          "column": 19
        },
        "end": {
          "line": 92,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3983,
      "end": 3989,
      "loc": {
        "start": {
          "line": 93,
          "column": 4
        },
        "end": {
          "line": 93,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 3990,
      "end": 3995,
      "loc": {
        "start": {
          "line": 93,
          "column": 11
        },
        "end": {
          "line": 93,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3995,
      "end": 3996,
      "loc": {
        "start": {
          "line": 93,
          "column": 16
        },
        "end": {
          "line": 93,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3997,
      "end": 3998,
      "loc": {
        "start": {
          "line": 94,
          "column": 0
        },
        "end": {
          "line": 94,
          "column": 1
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Disjoint Set Union",
      "start": 4000,
      "end": 4021,
      "loc": {
        "start": {
          "line": 96,
          "column": 0
        },
        "end": {
          "line": 96,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 4022,
      "end": 4028,
      "loc": {
        "start": {
          "line": 97,
          "column": 0
        },
        "end": {
          "line": 97,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 4029,
      "end": 4034,
      "loc": {
        "start": {
          "line": 97,
          "column": 7
        },
        "end": {
          "line": 97,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DSU",
      "start": 4035,
      "end": 4038,
      "loc": {
        "start": {
          "line": 97,
          "column": 13
        },
        "end": {
          "line": 97,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4039,
      "end": 4040,
      "loc": {
        "start": {
          "line": 97,
          "column": 17
        },
        "end": {
          "line": 97,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constructor",
      "start": 4045,
      "end": 4056,
      "loc": {
        "start": {
          "line": 98,
          "column": 4
        },
        "end": {
          "line": 98,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4056,
      "end": 4057,
      "loc": {
        "start": {
          "line": 98,
          "column": 15
        },
        "end": {
          "line": 98,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4057,
      "end": 4058,
      "loc": {
        "start": {
          "line": 98,
          "column": 16
        },
        "end": {
          "line": 98,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4059,
      "end": 4060,
      "loc": {
        "start": {
          "line": 98,
          "column": 18
        },
        "end": {
          "line": 98,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4069,
      "end": 4073,
      "loc": {
        "start": {
          "line": 99,
          "column": 8
        },
        "end": {
          "line": 99,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4073,
      "end": 4074,
      "loc": {
        "start": {
          "line": 99,
          "column": 12
        },
        "end": {
          "line": 99,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4074,
      "end": 4081,
      "loc": {
        "start": {
          "line": 99,
          "column": 13
        },
        "end": {
          "line": 99,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4082,
      "end": 4083,
      "loc": {
        "start": {
          "line": 99,
          "column": 21
        },
        "end": {
          "line": 99,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 4084,
      "end": 4087,
      "loc": {
        "start": {
          "line": 99,
          "column": 23
        },
        "end": {
          "line": 99,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Map",
      "start": 4088,
      "end": 4091,
      "loc": {
        "start": {
          "line": 99,
          "column": 27
        },
        "end": {
          "line": 99,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4091,
      "end": 4092,
      "loc": {
        "start": {
          "line": 99,
          "column": 30
        },
        "end": {
          "line": 99,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4092,
      "end": 4093,
      "loc": {
        "start": {
          "line": 99,
          "column": 31
        },
        "end": {
          "line": 99,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4093,
      "end": 4094,
      "loc": {
        "start": {
          "line": 99,
          "column": 32
        },
        "end": {
          "line": 99,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4099,
      "end": 4100,
      "loc": {
        "start": {
          "line": 100,
          "column": 4
        },
        "end": {
          "line": 100,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getParent",
      "start": 4106,
      "end": 4115,
      "loc": {
        "start": {
          "line": 102,
          "column": 4
        },
        "end": {
          "line": 102,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4115,
      "end": 4116,
      "loc": {
        "start": {
          "line": 102,
          "column": 13
        },
        "end": {
          "line": 102,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4116,
      "end": 4119,
      "loc": {
        "start": {
          "line": 102,
          "column": 14
        },
        "end": {
          "line": 102,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4119,
      "end": 4120,
      "loc": {
        "start": {
          "line": 102,
          "column": 17
        },
        "end": {
          "line": 102,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4121,
      "end": 4122,
      "loc": {
        "start": {
          "line": 102,
          "column": 19
        },
        "end": {
          "line": 102,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 4131,
      "end": 4137,
      "loc": {
        "start": {
          "line": 103,
          "column": 8
        },
        "end": {
          "line": 103,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4138,
      "end": 4142,
      "loc": {
        "start": {
          "line": 103,
          "column": 15
        },
        "end": {
          "line": 103,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4142,
      "end": 4143,
      "loc": {
        "start": {
          "line": 103,
          "column": 19
        },
        "end": {
          "line": 103,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4143,
      "end": 4150,
      "loc": {
        "start": {
          "line": 103,
          "column": 20
        },
        "end": {
          "line": 103,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4150,
      "end": 4151,
      "loc": {
        "start": {
          "line": 103,
          "column": 27
        },
        "end": {
          "line": 103,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 4151,
      "end": 4154,
      "loc": {
        "start": {
          "line": 103,
          "column": 28
        },
        "end": {
          "line": 103,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4154,
      "end": 4155,
      "loc": {
        "start": {
          "line": 103,
          "column": 31
        },
        "end": {
          "line": 103,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4155,
      "end": 4158,
      "loc": {
        "start": {
          "line": 103,
          "column": 32
        },
        "end": {
          "line": 103,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4158,
      "end": 4159,
      "loc": {
        "start": {
          "line": 103,
          "column": 35
        },
        "end": {
          "line": 103,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "?",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4160,
      "end": 4161,
      "loc": {
        "start": {
          "line": 103,
          "column": 37
        },
        "end": {
          "line": 103,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4162,
      "end": 4166,
      "loc": {
        "start": {
          "line": 103,
          "column": 39
        },
        "end": {
          "line": 103,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4166,
      "end": 4167,
      "loc": {
        "start": {
          "line": 103,
          "column": 43
        },
        "end": {
          "line": 103,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4167,
      "end": 4174,
      "loc": {
        "start": {
          "line": 103,
          "column": 44
        },
        "end": {
          "line": 103,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4174,
      "end": 4175,
      "loc": {
        "start": {
          "line": 103,
          "column": 51
        },
        "end": {
          "line": 103,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "get",
      "start": 4175,
      "end": 4178,
      "loc": {
        "start": {
          "line": 103,
          "column": 52
        },
        "end": {
          "line": 103,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4178,
      "end": 4179,
      "loc": {
        "start": {
          "line": 103,
          "column": 55
        },
        "end": {
          "line": 103,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4179,
      "end": 4182,
      "loc": {
        "start": {
          "line": 103,
          "column": 56
        },
        "end": {
          "line": 103,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4182,
      "end": 4183,
      "loc": {
        "start": {
          "line": 103,
          "column": 59
        },
        "end": {
          "line": 103,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4184,
      "end": 4185,
      "loc": {
        "start": {
          "line": 103,
          "column": 61
        },
        "end": {
          "line": 103,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4186,
      "end": 4189,
      "loc": {
        "start": {
          "line": 103,
          "column": 63
        },
        "end": {
          "line": 103,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4189,
      "end": 4190,
      "loc": {
        "start": {
          "line": 103,
          "column": 66
        },
        "end": {
          "line": 103,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4195,
      "end": 4196,
      "loc": {
        "start": {
          "line": 104,
          "column": 4
        },
        "end": {
          "line": 104,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4202,
      "end": 4211,
      "loc": {
        "start": {
          "line": 106,
          "column": 4
        },
        "end": {
          "line": 106,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4211,
      "end": 4212,
      "loc": {
        "start": {
          "line": 106,
          "column": 13
        },
        "end": {
          "line": 106,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4212,
      "end": 4215,
      "loc": {
        "start": {
          "line": 106,
          "column": 14
        },
        "end": {
          "line": 106,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4215,
      "end": 4216,
      "loc": {
        "start": {
          "line": 106,
          "column": 17
        },
        "end": {
          "line": 106,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4217,
      "end": 4220,
      "loc": {
        "start": {
          "line": 106,
          "column": 19
        },
        "end": {
          "line": 106,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4220,
      "end": 4221,
      "loc": {
        "start": {
          "line": 106,
          "column": 22
        },
        "end": {
          "line": 106,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4222,
      "end": 4223,
      "loc": {
        "start": {
          "line": 106,
          "column": 24
        },
        "end": {
          "line": 106,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4232,
      "end": 4236,
      "loc": {
        "start": {
          "line": 107,
          "column": 8
        },
        "end": {
          "line": 107,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4236,
      "end": 4237,
      "loc": {
        "start": {
          "line": 107,
          "column": 12
        },
        "end": {
          "line": 107,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4237,
      "end": 4244,
      "loc": {
        "start": {
          "line": 107,
          "column": 13
        },
        "end": {
          "line": 107,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4244,
      "end": 4245,
      "loc": {
        "start": {
          "line": 107,
          "column": 20
        },
        "end": {
          "line": 107,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "set",
      "start": 4245,
      "end": 4248,
      "loc": {
        "start": {
          "line": 107,
          "column": 21
        },
        "end": {
          "line": 107,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4248,
      "end": 4249,
      "loc": {
        "start": {
          "line": 107,
          "column": 24
        },
        "end": {
          "line": 107,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4249,
      "end": 4252,
      "loc": {
        "start": {
          "line": 107,
          "column": 25
        },
        "end": {
          "line": 107,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4252,
      "end": 4253,
      "loc": {
        "start": {
          "line": 107,
          "column": 28
        },
        "end": {
          "line": 107,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4254,
      "end": 4257,
      "loc": {
        "start": {
          "line": 107,
          "column": 30
        },
        "end": {
          "line": 107,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4257,
      "end": 4258,
      "loc": {
        "start": {
          "line": 107,
          "column": 33
        },
        "end": {
          "line": 107,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4258,
      "end": 4259,
      "loc": {
        "start": {
          "line": 107,
          "column": 34
        },
        "end": {
          "line": 107,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4264,
      "end": 4265,
      "loc": {
        "start": {
          "line": 108,
          "column": 4
        },
        "end": {
          "line": 108,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "touch",
      "start": 4271,
      "end": 4276,
      "loc": {
        "start": {
          "line": 110,
          "column": 4
        },
        "end": {
          "line": 110,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4276,
      "end": 4277,
      "loc": {
        "start": {
          "line": 110,
          "column": 9
        },
        "end": {
          "line": 110,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4277,
      "end": 4280,
      "loc": {
        "start": {
          "line": 110,
          "column": 10
        },
        "end": {
          "line": 110,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4280,
      "end": 4281,
      "loc": {
        "start": {
          "line": 110,
          "column": 13
        },
        "end": {
          "line": 110,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4282,
      "end": 4283,
      "loc": {
        "start": {
          "line": 110,
          "column": 15
        },
        "end": {
          "line": 110,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 4292,
      "end": 4294,
      "loc": {
        "start": {
          "line": 111,
          "column": 8
        },
        "end": {
          "line": 111,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4295,
      "end": 4296,
      "loc": {
        "start": {
          "line": 111,
          "column": 11
        },
        "end": {
          "line": 111,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "prefix",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "!",
      "start": 4296,
      "end": 4297,
      "loc": {
        "start": {
          "line": 111,
          "column": 12
        },
        "end": {
          "line": 111,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4297,
      "end": 4301,
      "loc": {
        "start": {
          "line": 111,
          "column": 13
        },
        "end": {
          "line": 111,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4301,
      "end": 4302,
      "loc": {
        "start": {
          "line": 111,
          "column": 17
        },
        "end": {
          "line": 111,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4302,
      "end": 4309,
      "loc": {
        "start": {
          "line": 111,
          "column": 18
        },
        "end": {
          "line": 111,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4309,
      "end": 4310,
      "loc": {
        "start": {
          "line": 111,
          "column": 25
        },
        "end": {
          "line": 111,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 4310,
      "end": 4313,
      "loc": {
        "start": {
          "line": 111,
          "column": 26
        },
        "end": {
          "line": 111,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4313,
      "end": 4314,
      "loc": {
        "start": {
          "line": 111,
          "column": 29
        },
        "end": {
          "line": 111,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4314,
      "end": 4317,
      "loc": {
        "start": {
          "line": 111,
          "column": 30
        },
        "end": {
          "line": 111,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4317,
      "end": 4318,
      "loc": {
        "start": {
          "line": 111,
          "column": 33
        },
        "end": {
          "line": 111,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4318,
      "end": 4319,
      "loc": {
        "start": {
          "line": 111,
          "column": 34
        },
        "end": {
          "line": 111,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4332,
      "end": 4336,
      "loc": {
        "start": {
          "line": 112,
          "column": 12
        },
        "end": {
          "line": 112,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4336,
      "end": 4337,
      "loc": {
        "start": {
          "line": 112,
          "column": 16
        },
        "end": {
          "line": 112,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4337,
      "end": 4344,
      "loc": {
        "start": {
          "line": 112,
          "column": 17
        },
        "end": {
          "line": 112,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4344,
      "end": 4345,
      "loc": {
        "start": {
          "line": 112,
          "column": 24
        },
        "end": {
          "line": 112,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "set",
      "start": 4345,
      "end": 4348,
      "loc": {
        "start": {
          "line": 112,
          "column": 25
        },
        "end": {
          "line": 112,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4348,
      "end": 4349,
      "loc": {
        "start": {
          "line": 112,
          "column": 28
        },
        "end": {
          "line": 112,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4349,
      "end": 4352,
      "loc": {
        "start": {
          "line": 112,
          "column": 29
        },
        "end": {
          "line": 112,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4352,
      "end": 4353,
      "loc": {
        "start": {
          "line": 112,
          "column": 32
        },
        "end": {
          "line": 112,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4354,
      "end": 4357,
      "loc": {
        "start": {
          "line": 112,
          "column": 34
        },
        "end": {
          "line": 112,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4357,
      "end": 4358,
      "loc": {
        "start": {
          "line": 112,
          "column": 37
        },
        "end": {
          "line": 112,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4358,
      "end": 4359,
      "loc": {
        "start": {
          "line": 112,
          "column": 38
        },
        "end": {
          "line": 112,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4364,
      "end": 4365,
      "loc": {
        "start": {
          "line": 113,
          "column": 4
        },
        "end": {
          "line": 113,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4371,
      "end": 4378,
      "loc": {
        "start": {
          "line": 115,
          "column": 4
        },
        "end": {
          "line": 115,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4378,
      "end": 4379,
      "loc": {
        "start": {
          "line": 115,
          "column": 11
        },
        "end": {
          "line": 115,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4379,
      "end": 4382,
      "loc": {
        "start": {
          "line": 115,
          "column": 12
        },
        "end": {
          "line": 115,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4382,
      "end": 4383,
      "loc": {
        "start": {
          "line": 115,
          "column": 15
        },
        "end": {
          "line": 115,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4384,
      "end": 4385,
      "loc": {
        "start": {
          "line": 115,
          "column": 17
        },
        "end": {
          "line": 115,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 4394,
      "end": 4399,
      "loc": {
        "start": {
          "line": 116,
          "column": 8
        },
        "end": {
          "line": 116,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4400,
      "end": 4403,
      "loc": {
        "start": {
          "line": 116,
          "column": 14
        },
        "end": {
          "line": 116,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4404,
      "end": 4405,
      "loc": {
        "start": {
          "line": 116,
          "column": 18
        },
        "end": {
          "line": 116,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4406,
      "end": 4410,
      "loc": {
        "start": {
          "line": 116,
          "column": 20
        },
        "end": {
          "line": 116,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4410,
      "end": 4411,
      "loc": {
        "start": {
          "line": 116,
          "column": 24
        },
        "end": {
          "line": 116,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getParent",
      "start": 4411,
      "end": 4420,
      "loc": {
        "start": {
          "line": 116,
          "column": 25
        },
        "end": {
          "line": 116,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4420,
      "end": 4421,
      "loc": {
        "start": {
          "line": 116,
          "column": 34
        },
        "end": {
          "line": 116,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4421,
      "end": 4424,
      "loc": {
        "start": {
          "line": 116,
          "column": 35
        },
        "end": {
          "line": 116,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4424,
      "end": 4425,
      "loc": {
        "start": {
          "line": 116,
          "column": 38
        },
        "end": {
          "line": 116,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4425,
      "end": 4426,
      "loc": {
        "start": {
          "line": 116,
          "column": 39
        },
        "end": {
          "line": 116,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 4435,
      "end": 4437,
      "loc": {
        "start": {
          "line": 117,
          "column": 8
        },
        "end": {
          "line": 117,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4438,
      "end": 4439,
      "loc": {
        "start": {
          "line": 117,
          "column": 11
        },
        "end": {
          "line": 117,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4439,
      "end": 4442,
      "loc": {
        "start": {
          "line": 117,
          "column": 12
        },
        "end": {
          "line": 117,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 4443,
      "end": 4446,
      "loc": {
        "start": {
          "line": 117,
          "column": 16
        },
        "end": {
          "line": 117,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4447,
      "end": 4450,
      "loc": {
        "start": {
          "line": 117,
          "column": 20
        },
        "end": {
          "line": 117,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4450,
      "end": 4451,
      "loc": {
        "start": {
          "line": 117,
          "column": 23
        },
        "end": {
          "line": 117,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 4464,
      "end": 4470,
      "loc": {
        "start": {
          "line": 118,
          "column": 12
        },
        "end": {
          "line": 118,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4471,
      "end": 4474,
      "loc": {
        "start": {
          "line": 118,
          "column": 19
        },
        "end": {
          "line": 118,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4474,
      "end": 4475,
      "loc": {
        "start": {
          "line": 118,
          "column": 22
        },
        "end": {
          "line": 118,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 4484,
      "end": 4489,
      "loc": {
        "start": {
          "line": 119,
          "column": 8
        },
        "end": {
          "line": 119,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4490,
      "end": 4494,
      "loc": {
        "start": {
          "line": 119,
          "column": 14
        },
        "end": {
          "line": 119,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4495,
      "end": 4496,
      "loc": {
        "start": {
          "line": 119,
          "column": 19
        },
        "end": {
          "line": 119,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4497,
      "end": 4501,
      "loc": {
        "start": {
          "line": 119,
          "column": 21
        },
        "end": {
          "line": 119,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4501,
      "end": 4502,
      "loc": {
        "start": {
          "line": 119,
          "column": 25
        },
        "end": {
          "line": 119,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4502,
      "end": 4509,
      "loc": {
        "start": {
          "line": 119,
          "column": 26
        },
        "end": {
          "line": 119,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4509,
      "end": 4510,
      "loc": {
        "start": {
          "line": 119,
          "column": 33
        },
        "end": {
          "line": 119,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4510,
      "end": 4513,
      "loc": {
        "start": {
          "line": 119,
          "column": 34
        },
        "end": {
          "line": 119,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4513,
      "end": 4514,
      "loc": {
        "start": {
          "line": 119,
          "column": 37
        },
        "end": {
          "line": 119,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4514,
      "end": 4515,
      "loc": {
        "start": {
          "line": 119,
          "column": 38
        },
        "end": {
          "line": 119,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4524,
      "end": 4528,
      "loc": {
        "start": {
          "line": 120,
          "column": 8
        },
        "end": {
          "line": 120,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4528,
      "end": 4529,
      "loc": {
        "start": {
          "line": 120,
          "column": 12
        },
        "end": {
          "line": 120,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4529,
      "end": 4538,
      "loc": {
        "start": {
          "line": 120,
          "column": 13
        },
        "end": {
          "line": 120,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4538,
      "end": 4539,
      "loc": {
        "start": {
          "line": 120,
          "column": 22
        },
        "end": {
          "line": 120,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4539,
      "end": 4542,
      "loc": {
        "start": {
          "line": 120,
          "column": 23
        },
        "end": {
          "line": 120,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4542,
      "end": 4543,
      "loc": {
        "start": {
          "line": 120,
          "column": 26
        },
        "end": {
          "line": 120,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4544,
      "end": 4548,
      "loc": {
        "start": {
          "line": 120,
          "column": 28
        },
        "end": {
          "line": 120,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4548,
      "end": 4549,
      "loc": {
        "start": {
          "line": 120,
          "column": 32
        },
        "end": {
          "line": 120,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4549,
      "end": 4550,
      "loc": {
        "start": {
          "line": 120,
          "column": 33
        },
        "end": {
          "line": 120,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 4559,
      "end": 4565,
      "loc": {
        "start": {
          "line": 121,
          "column": 8
        },
        "end": {
          "line": 121,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4566,
      "end": 4570,
      "loc": {
        "start": {
          "line": 121,
          "column": 15
        },
        "end": {
          "line": 121,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4570,
      "end": 4571,
      "loc": {
        "start": {
          "line": 121,
          "column": 19
        },
        "end": {
          "line": 121,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4576,
      "end": 4577,
      "loc": {
        "start": {
          "line": 122,
          "column": 4
        },
        "end": {
          "line": 122,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 4583,
      "end": 4588,
      "loc": {
        "start": {
          "line": 124,
          "column": 4
        },
        "end": {
          "line": 124,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4588,
      "end": 4589,
      "loc": {
        "start": {
          "line": 124,
          "column": 9
        },
        "end": {
          "line": 124,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4589,
      "end": 4593,
      "loc": {
        "start": {
          "line": 124,
          "column": 10
        },
        "end": {
          "line": 124,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4593,
      "end": 4594,
      "loc": {
        "start": {
          "line": 124,
          "column": 14
        },
        "end": {
          "line": 124,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4595,
      "end": 4599,
      "loc": {
        "start": {
          "line": 124,
          "column": 16
        },
        "end": {
          "line": 124,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4599,
      "end": 4600,
      "loc": {
        "start": {
          "line": 124,
          "column": 20
        },
        "end": {
          "line": 124,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4601,
      "end": 4602,
      "loc": {
        "start": {
          "line": 124,
          "column": 22
        },
        "end": {
          "line": 124,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4611,
      "end": 4615,
      "loc": {
        "start": {
          "line": 125,
          "column": 8
        },
        "end": {
          "line": 125,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4615,
      "end": 4616,
      "loc": {
        "start": {
          "line": 125,
          "column": 12
        },
        "end": {
          "line": 125,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "touch",
      "start": 4616,
      "end": 4621,
      "loc": {
        "start": {
          "line": 125,
          "column": 13
        },
        "end": {
          "line": 125,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4621,
      "end": 4622,
      "loc": {
        "start": {
          "line": 125,
          "column": 18
        },
        "end": {
          "line": 125,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4622,
      "end": 4626,
      "loc": {
        "start": {
          "line": 125,
          "column": 19
        },
        "end": {
          "line": 125,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4626,
      "end": 4627,
      "loc": {
        "start": {
          "line": 125,
          "column": 23
        },
        "end": {
          "line": 125,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4627,
      "end": 4628,
      "loc": {
        "start": {
          "line": 125,
          "column": 24
        },
        "end": {
          "line": 125,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4637,
      "end": 4641,
      "loc": {
        "start": {
          "line": 126,
          "column": 8
        },
        "end": {
          "line": 126,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4641,
      "end": 4642,
      "loc": {
        "start": {
          "line": 126,
          "column": 12
        },
        "end": {
          "line": 126,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "touch",
      "start": 4642,
      "end": 4647,
      "loc": {
        "start": {
          "line": 126,
          "column": 13
        },
        "end": {
          "line": 126,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4647,
      "end": 4648,
      "loc": {
        "start": {
          "line": 126,
          "column": 18
        },
        "end": {
          "line": 126,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4648,
      "end": 4652,
      "loc": {
        "start": {
          "line": 126,
          "column": 19
        },
        "end": {
          "line": 126,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4652,
      "end": 4653,
      "loc": {
        "start": {
          "line": 126,
          "column": 23
        },
        "end": {
          "line": 126,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4653,
      "end": 4654,
      "loc": {
        "start": {
          "line": 126,
          "column": 24
        },
        "end": {
          "line": 126,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4663,
      "end": 4667,
      "loc": {
        "start": {
          "line": 127,
          "column": 8
        },
        "end": {
          "line": 127,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4668,
      "end": 4669,
      "loc": {
        "start": {
          "line": 127,
          "column": 13
        },
        "end": {
          "line": 127,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4670,
      "end": 4674,
      "loc": {
        "start": {
          "line": 127,
          "column": 15
        },
        "end": {
          "line": 127,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4674,
      "end": 4675,
      "loc": {
        "start": {
          "line": 127,
          "column": 19
        },
        "end": {
          "line": 127,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4675,
      "end": 4682,
      "loc": {
        "start": {
          "line": 127,
          "column": 20
        },
        "end": {
          "line": 127,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4682,
      "end": 4683,
      "loc": {
        "start": {
          "line": 127,
          "column": 27
        },
        "end": {
          "line": 127,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4683,
      "end": 4687,
      "loc": {
        "start": {
          "line": 127,
          "column": 28
        },
        "end": {
          "line": 127,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4687,
      "end": 4688,
      "loc": {
        "start": {
          "line": 127,
          "column": 32
        },
        "end": {
          "line": 127,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4688,
      "end": 4689,
      "loc": {
        "start": {
          "line": 127,
          "column": 33
        },
        "end": {
          "line": 127,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4698,
      "end": 4702,
      "loc": {
        "start": {
          "line": 128,
          "column": 8
        },
        "end": {
          "line": 128,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4703,
      "end": 4704,
      "loc": {
        "start": {
          "line": 128,
          "column": 13
        },
        "end": {
          "line": 128,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4705,
      "end": 4709,
      "loc": {
        "start": {
          "line": 128,
          "column": 15
        },
        "end": {
          "line": 128,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4709,
      "end": 4710,
      "loc": {
        "start": {
          "line": 128,
          "column": 19
        },
        "end": {
          "line": 128,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4710,
      "end": 4717,
      "loc": {
        "start": {
          "line": 128,
          "column": 20
        },
        "end": {
          "line": 128,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4717,
      "end": 4718,
      "loc": {
        "start": {
          "line": 128,
          "column": 27
        },
        "end": {
          "line": 128,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4718,
      "end": 4722,
      "loc": {
        "start": {
          "line": 128,
          "column": 28
        },
        "end": {
          "line": 128,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4722,
      "end": 4723,
      "loc": {
        "start": {
          "line": 128,
          "column": 32
        },
        "end": {
          "line": 128,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4723,
      "end": 4724,
      "loc": {
        "start": {
          "line": 128,
          "column": 33
        },
        "end": {
          "line": 128,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4733,
      "end": 4734,
      "loc": {
        "start": {
          "line": 129,
          "column": 8
        },
        "end": {
          "line": 129,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Math",
      "start": 4734,
      "end": 4738,
      "loc": {
        "start": {
          "line": 129,
          "column": 9
        },
        "end": {
          "line": 129,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4738,
      "end": 4739,
      "loc": {
        "start": {
          "line": 129,
          "column": 13
        },
        "end": {
          "line": 129,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "random",
      "start": 4739,
      "end": 4745,
      "loc": {
        "start": {
          "line": 129,
          "column": 14
        },
        "end": {
          "line": 129,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4745,
      "end": 4746,
      "loc": {
        "start": {
          "line": 129,
          "column": 20
        },
        "end": {
          "line": 129,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4746,
      "end": 4747,
      "loc": {
        "start": {
          "line": 129,
          "column": 21
        },
        "end": {
          "line": 129,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<",
      "start": 4748,
      "end": 4749,
      "loc": {
        "start": {
          "line": 129,
          "column": 23
        },
        "end": {
          "line": 129,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0.5,
      "start": 4750,
      "end": 4753,
      "loc": {
        "start": {
          "line": 129,
          "column": 25
        },
        "end": {
          "line": 129,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4753,
      "end": 4754,
      "loc": {
        "start": {
          "line": 129,
          "column": 28
        },
        "end": {
          "line": 129,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "?",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4755,
      "end": 4756,
      "loc": {
        "start": {
          "line": 129,
          "column": 30
        },
        "end": {
          "line": 129,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4757,
      "end": 4761,
      "loc": {
        "start": {
          "line": 129,
          "column": 32
        },
        "end": {
          "line": 129,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4761,
      "end": 4762,
      "loc": {
        "start": {
          "line": 129,
          "column": 36
        },
        "end": {
          "line": 129,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4762,
      "end": 4771,
      "loc": {
        "start": {
          "line": 129,
          "column": 37
        },
        "end": {
          "line": 129,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4771,
      "end": 4772,
      "loc": {
        "start": {
          "line": 129,
          "column": 46
        },
        "end": {
          "line": 129,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4772,
      "end": 4776,
      "loc": {
        "start": {
          "line": 129,
          "column": 47
        },
        "end": {
          "line": 129,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4776,
      "end": 4777,
      "loc": {
        "start": {
          "line": 129,
          "column": 51
        },
        "end": {
          "line": 129,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4778,
      "end": 4782,
      "loc": {
        "start": {
          "line": 129,
          "column": 53
        },
        "end": {
          "line": 129,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4782,
      "end": 4783,
      "loc": {
        "start": {
          "line": 129,
          "column": 57
        },
        "end": {
          "line": 129,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4784,
      "end": 4785,
      "loc": {
        "start": {
          "line": 129,
          "column": 59
        },
        "end": {
          "line": 129,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4786,
      "end": 4790,
      "loc": {
        "start": {
          "line": 129,
          "column": 61
        },
        "end": {
          "line": 129,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4790,
      "end": 4791,
      "loc": {
        "start": {
          "line": 129,
          "column": 65
        },
        "end": {
          "line": 129,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4791,
      "end": 4800,
      "loc": {
        "start": {
          "line": 129,
          "column": 66
        },
        "end": {
          "line": 129,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4800,
      "end": 4801,
      "loc": {
        "start": {
          "line": 129,
          "column": 75
        },
        "end": {
          "line": 129,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4801,
      "end": 4805,
      "loc": {
        "start": {
          "line": 129,
          "column": 76
        },
        "end": {
          "line": 129,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4805,
      "end": 4806,
      "loc": {
        "start": {
          "line": 129,
          "column": 80
        },
        "end": {
          "line": 129,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4807,
      "end": 4811,
      "loc": {
        "start": {
          "line": 129,
          "column": 82
        },
        "end": {
          "line": 129,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4811,
      "end": 4812,
      "loc": {
        "start": {
          "line": 129,
          "column": 86
        },
        "end": {
          "line": 129,
          "column": 87
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4812,
      "end": 4813,
      "loc": {
        "start": {
          "line": 129,
          "column": 87
        },
        "end": {
          "line": 129,
          "column": 88
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4818,
      "end": 4819,
      "loc": {
        "start": {
          "line": 130,
          "column": 4
        },
        "end": {
          "line": 130,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getTouched",
      "start": 4825,
      "end": 4835,
      "loc": {
        "start": {
          "line": 132,
          "column": 4
        },
        "end": {
          "line": 132,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4835,
      "end": 4836,
      "loc": {
        "start": {
          "line": 132,
          "column": 14
        },
        "end": {
          "line": 132,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4836,
      "end": 4837,
      "loc": {
        "start": {
          "line": 132,
          "column": 15
        },
        "end": {
          "line": 132,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4838,
      "end": 4839,
      "loc": {
        "start": {
          "line": 132,
          "column": 17
        },
        "end": {
          "line": 132,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 4848,
      "end": 4854,
      "loc": {
        "start": {
          "line": 133,
          "column": 8
        },
        "end": {
          "line": 133,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Array",
      "start": 4855,
      "end": 4860,
      "loc": {
        "start": {
          "line": 133,
          "column": 15
        },
        "end": {
          "line": 133,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4860,
      "end": 4861,
      "loc": {
        "start": {
          "line": 133,
          "column": 20
        },
        "end": {
          "line": 133,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 4861,
      "end": 4865,
      "loc": {
        "start": {
          "line": 133,
          "column": 21
        },
        "end": {
          "line": 133,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4865,
      "end": 4866,
      "loc": {
        "start": {
          "line": 133,
          "column": 25
        },
        "end": {
          "line": 133,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "this",
        "keyword": "this",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "this",
      "start": 4866,
      "end": 4870,
      "loc": {
        "start": {
          "line": 133,
          "column": 26
        },
        "end": {
          "line": 133,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4870,
      "end": 4871,
      "loc": {
        "start": {
          "line": 133,
          "column": 30
        },
        "end": {
          "line": 133,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4871,
      "end": 4878,
      "loc": {
        "start": {
          "line": 133,
          "column": 31
        },
        "end": {
          "line": 133,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4878,
      "end": 4879,
      "loc": {
        "start": {
          "line": 133,
          "column": 38
        },
        "end": {
          "line": 133,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "keys",
      "start": 4879,
      "end": 4883,
      "loc": {
        "start": {
          "line": 133,
          "column": 39
        },
        "end": {
          "line": 133,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4883,
      "end": 4884,
      "loc": {
        "start": {
          "line": 133,
          "column": 43
        },
        "end": {
          "line": 133,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4884,
      "end": 4885,
      "loc": {
        "start": {
          "line": 133,
          "column": 44
        },
        "end": {
          "line": 133,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4885,
      "end": 4886,
      "loc": {
        "start": {
          "line": 133,
          "column": 45
        },
        "end": {
          "line": 133,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4886,
      "end": 4887,
      "loc": {
        "start": {
          "line": 133,
          "column": 46
        },
        "end": {
          "line": 133,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4892,
      "end": 4893,
      "loc": {
        "start": {
          "line": 134,
          "column": 4
        },
        "end": {
          "line": 134,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4894,
      "end": 4895,
      "loc": {
        "start": {
          "line": 135,
          "column": 0
        },
        "end": {
          "line": 135,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4896,
      "end": 4896,
      "loc": {
        "start": {
          "line": 136,
          "column": 0
        },
        "end": {
          "line": 136,
          "column": 0
        }
      }
    }
  ]
}