{
  "type": "File",
  "start": 0,
  "end": 4848,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 131,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 4848,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 131,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 0,
        "end": 50,
        "loc": {
          "start": {
            "line": 1,
            "column": 0
          },
          "end": {
            "line": 1,
            "column": 50
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 9,
            "end": 19,
            "loc": {
              "start": {
                "line": 1,
                "column": 9
              },
              "end": {
                "line": 1,
                "column": 19
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 9,
              "end": 19,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 9
                },
                "end": {
                  "line": 1,
                  "column": 19
                },
                "identifierName": "addCommand"
              },
              "name": "addCommand"
            },
            "local": {
              "type": "Identifier",
              "start": 9,
              "end": 19,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 9
                },
                "end": {
                  "line": 1,
                  "column": 19
                },
                "identifierName": "addCommand"
              },
              "name": "addCommand"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 27,
          "end": 49,
          "loc": {
            "start": {
              "line": 1,
              "column": 27
            },
            "end": {
              "line": 1,
              "column": 49
            }
          },
          "extra": {
            "rawValue": "../command/highlevel",
            "raw": "'../command/highlevel'"
          },
          "value": "../command/highlevel"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 51,
        "end": 84,
        "loc": {
          "start": {
            "line": 2,
            "column": 0
          },
          "end": {
            "line": 2,
            "column": 33
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 58,
            "end": 68,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 17
              }
            },
            "local": {
              "type": "Identifier",
              "start": 58,
              "end": 68,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 7
                },
                "end": {
                  "line": 2,
                  "column": 17
                },
                "identifierName": "Constraint"
              },
              "name": "Constraint"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 74,
          "end": 83,
          "loc": {
            "start": {
              "line": 2,
              "column": 23
            },
            "end": {
              "line": 2,
              "column": 32
            }
          },
          "extra": {
            "rawValue": "./index",
            "raw": "'./index'"
          },
          "value": "./index"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 85,
        "end": 148,
        "loc": {
          "start": {
            "line": 3,
            "column": 0
          },
          "end": {
            "line": 3,
            "column": 63
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 94,
            "end": 103,
            "loc": {
              "start": {
                "line": 3,
                "column": 9
              },
              "end": {
                "line": 3,
                "column": 18
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 94,
              "end": 103,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 9
                },
                "end": {
                  "line": 3,
                  "column": 18
                },
                "identifierName": "incidence"
              },
              "name": "incidence"
            },
            "local": {
              "type": "Identifier",
              "start": 94,
              "end": 103,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 9
                },
                "end": {
                  "line": 3,
                  "column": 18
                },
                "identifierName": "incidence"
              },
              "name": "incidence"
            }
          },
          {
            "type": "ImportSpecifier",
            "start": 105,
            "end": 118,
            "loc": {
              "start": {
                "line": 3,
                "column": 20
              },
              "end": {
                "line": 3,
                "column": 33
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 105,
              "end": 118,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 20
                },
                "end": {
                  "line": 3,
                  "column": 33
                },
                "identifierName": "horizontality"
              },
              "name": "horizontality"
            },
            "local": {
              "type": "Identifier",
              "start": 105,
              "end": 118,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 20
                },
                "end": {
                  "line": 3,
                  "column": 33
                },
                "identifierName": "horizontality"
              },
              "name": "horizontality"
            }
          },
          {
            "type": "ImportSpecifier",
            "start": 120,
            "end": 131,
            "loc": {
              "start": {
                "line": 3,
                "column": 35
              },
              "end": {
                "line": 3,
                "column": 46
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 120,
              "end": 131,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 35
                },
                "end": {
                  "line": 3,
                  "column": 46
                },
                "identifierName": "verticality"
              },
              "name": "verticality"
            },
            "local": {
              "type": "Identifier",
              "start": 120,
              "end": 131,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 35
                },
                "end": {
                  "line": 3,
                  "column": 46
                },
                "identifierName": "verticality"
              },
              "name": "verticality"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 139,
          "end": 147,
          "loc": {
            "start": {
              "line": 3,
              "column": 54
            },
            "end": {
              "line": 3,
              "column": 62
            }
          },
          "extra": {
            "rawValue": "./type",
            "raw": "'./type'"
          },
          "value": "./type"
        }
      },
      {
        "type": "ExportDefaultDeclaration",
        "start": 150,
        "end": 3321,
        "loc": {
          "start": {
            "line": 5,
            "column": 0
          },
          "end": {
            "line": 79,
            "column": 1
          }
        },
        "declaration": {
          "type": "ClassDeclaration",
          "start": 165,
          "end": 3321,
          "loc": {
            "start": {
              "line": 5,
              "column": 15
            },
            "end": {
              "line": 79,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 171,
            "end": 186,
            "loc": {
              "start": {
                "line": 5,
                "column": 21
              },
              "end": {
                "line": 5,
                "column": 36
              },
              "identifierName": "ConstraintAdder"
            },
            "name": "ConstraintAdder"
          },
          "superClass": null,
          "body": {
            "type": "ClassBody",
            "start": 187,
            "end": 3321,
            "loc": {
              "start": {
                "line": 5,
                "column": 37
              },
              "end": {
                "line": 79,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassMethod",
                "start": 193,
                "end": 791,
                "loc": {
                  "start": {
                    "line": 6,
                    "column": 4
                  },
                  "end": {
                    "line": 21,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 193,
                  "end": 204,
                  "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": 205,
                    "end": 211,
                    "loc": {
                      "start": {
                        "line": 6,
                        "column": 16
                      },
                      "end": {
                        "line": 6,
                        "column": 22
                      },
                      "identifierName": "sketch"
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 213,
                  "end": 791,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 24
                    },
                    "end": {
                      "line": 21,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 280,
                      "end": 301,
                      "loc": {
                        "start": {
                          "line": 8,
                          "column": 8
                        },
                        "end": {
                          "line": 8,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 280,
                        "end": 300,
                        "loc": {
                          "start": {
                            "line": 8,
                            "column": 8
                          },
                          "end": {
                            "line": 8,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 280,
                          "end": 291,
                          "loc": {
                            "start": {
                              "line": 8,
                              "column": 8
                            },
                            "end": {
                              "line": 8,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 280,
                            "end": 284,
                            "loc": {
                              "start": {
                                "line": 8,
                                "column": 8
                              },
                              "end": {
                                "line": 8,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 285,
                            "end": 291,
                            "loc": {
                              "start": {
                                "line": 8,
                                "column": 13
                              },
                              "end": {
                                "line": 8,
                                "column": 19
                              },
                              "identifierName": "sketch"
                            },
                            "name": "sketch"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 294,
                          "end": 300,
                          "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": 223,
                          "end": 271,
                          "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": 310,
                          "end": 375,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 73
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 384,
                      "end": 406,
                      "loc": {
                        "start": {
                          "line": 10,
                          "column": 8
                        },
                        "end": {
                          "line": 10,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 384,
                        "end": 405,
                        "loc": {
                          "start": {
                            "line": 10,
                            "column": 8
                          },
                          "end": {
                            "line": 10,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 384,
                          "end": 400,
                          "loc": {
                            "start": {
                              "line": 10,
                              "column": 8
                            },
                            "end": {
                              "line": 10,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 384,
                            "end": 388,
                            "loc": {
                              "start": {
                                "line": 10,
                                "column": 8
                              },
                              "end": {
                                "line": 10,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 389,
                            "end": 400,
                            "loc": {
                              "start": {
                                "line": 10,
                                "column": 13
                              },
                              "end": {
                                "line": 10,
                                "column": 24
                              },
                              "identifierName": "constraints"
                            },
                            "name": "constraints"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 403,
                          "end": 405,
                          "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": 310,
                          "end": 375,
                          "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": 416,
                          "end": 475,
                          "loc": {
                            "start": {
                              "line": 12,
                              "column": 8
                            },
                            "end": {
                              "line": 12,
                              "column": 67
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 484,
                      "end": 514,
                      "loc": {
                        "start": {
                          "line": 13,
                          "column": 8
                        },
                        "end": {
                          "line": 13,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 484,
                        "end": 513,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 8
                          },
                          "end": {
                            "line": 13,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 484,
                          "end": 501,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 8
                            },
                            "end": {
                              "line": 13,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 484,
                            "end": 488,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 8
                              },
                              "end": {
                                "line": 13,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 489,
                            "end": 501,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 13
                              },
                              "end": {
                                "line": 13,
                                "column": 25
                              },
                              "identifierName": "incidenceDsu"
                            },
                            "name": "incidenceDsu"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 504,
                          "end": 513,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 28
                            },
                            "end": {
                              "line": 13,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 508,
                            "end": 511,
                            "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": 416,
                          "end": 475,
                          "loc": {
                            "start": {
                              "line": 12,
                              "column": 8
                            },
                            "end": {
                              "line": 12,
                              "column": 67
                            }
                          }
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    // TODO!",
                          "start": 523,
                          "end": 566,
                          "loc": {
                            "start": {
                              "line": 14,
                              "column": 8
                            },
                            "end": {
                              "line": 14,
                              "column": 51
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " sets of horizontal and vertical lines",
                          "start": 575,
                          "end": 615,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 8
                            },
                            "end": {
                              "line": 15,
                              "column": 48
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 624,
                      "end": 655,
                      "loc": {
                        "start": {
                          "line": 16,
                          "column": 8
                        },
                        "end": {
                          "line": 16,
                          "column": 39
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 624,
                        "end": 654,
                        "loc": {
                          "start": {
                            "line": 16,
                            "column": 8
                          },
                          "end": {
                            "line": 16,
                            "column": 38
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 624,
                          "end": 642,
                          "loc": {
                            "start": {
                              "line": 16,
                              "column": 8
                            },
                            "end": {
                              "line": 16,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 624,
                            "end": 628,
                            "loc": {
                              "start": {
                                "line": 16,
                                "column": 8
                              },
                              "end": {
                                "line": 16,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 629,
                            "end": 642,
                            "loc": {
                              "start": {
                                "line": 16,
                                "column": 13
                              },
                              "end": {
                                "line": 16,
                                "column": 26
                              },
                              "identifierName": "horizontalSet"
                            },
                            "name": "horizontalSet"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 645,
                          "end": 654,
                          "loc": {
                            "start": {
                              "line": 16,
                              "column": 29
                            },
                            "end": {
                              "line": 16,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 649,
                            "end": 652,
                            "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": 523,
                          "end": 566,
                          "loc": {
                            "start": {
                              "line": 14,
                              "column": 8
                            },
                            "end": {
                              "line": 14,
                              "column": 51
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " sets of horizontal and vertical lines",
                          "start": 575,
                          "end": 615,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 8
                            },
                            "end": {
                              "line": 15,
                              "column": 48
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 664,
                      "end": 693,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 8
                        },
                        "end": {
                          "line": 17,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 664,
                        "end": 692,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 8
                          },
                          "end": {
                            "line": 17,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 664,
                          "end": 680,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 8
                            },
                            "end": {
                              "line": 17,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 664,
                            "end": 668,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 8
                              },
                              "end": {
                                "line": 17,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 669,
                            "end": 680,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 13
                              },
                              "end": {
                                "line": 17,
                                "column": 24
                              },
                              "identifierName": "verticalSet"
                            },
                            "name": "verticalSet"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 683,
                          "end": 692,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 27
                            },
                            "end": {
                              "line": 17,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 687,
                            "end": 690,
                            "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": 703,
                          "end": 764,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 8
                            },
                            "end": {
                              "line": 19,
                              "column": 69
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 773,
                      "end": 785,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 8
                        },
                        "end": {
                          "line": 20,
                          "column": 20
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 773,
                        "end": 784,
                        "loc": {
                          "start": {
                            "line": 20,
                            "column": 8
                          },
                          "end": {
                            "line": 20,
                            "column": 19
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 773,
                          "end": 782,
                          "loc": {
                            "start": {
                              "line": 20,
                              "column": 8
                            },
                            "end": {
                              "line": 20,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 773,
                            "end": 777,
                            "loc": {
                              "start": {
                                "line": 20,
                                "column": 8
                              },
                              "end": {
                                "line": 20,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 778,
                            "end": 782,
                            "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": 703,
                          "end": 764,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 8
                            },
                            "end": {
                              "line": 19,
                              "column": 69
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 797,
                "end": 1402,
                "loc": {
                  "start": {
                    "line": 23,
                    "column": 4
                  },
                  "end": {
                    "line": 38,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 797,
                  "end": 801,
                  "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": 804,
                  "end": 1402,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 11
                    },
                    "end": {
                      "line": 38,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ForOfStatement",
                      "start": 867,
                      "end": 1396,
                      "loc": {
                        "start": {
                          "line": 25,
                          "column": 8
                        },
                        "end": {
                          "line": 37,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 872,
                        "end": 882,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 13
                          },
                          "end": {
                            "line": 25,
                            "column": 23
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 876,
                            "end": 882,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 17
                              },
                              "end": {
                                "line": 25,
                                "column": 23
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 876,
                              "end": 882,
                              "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": 886,
                        "end": 906,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 27
                          },
                          "end": {
                            "line": 25,
                            "column": 47
                          }
                        },
                        "object": {
                          "type": "MemberExpression",
                          "start": 886,
                          "end": 897,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 27
                            },
                            "end": {
                              "line": 25,
                              "column": 38
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 886,
                            "end": 890,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 27
                              },
                              "end": {
                                "line": 25,
                                "column": 31
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 891,
                            "end": 897,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 32
                              },
                              "end": {
                                "line": 25,
                                "column": 38
                              },
                              "identifierName": "sketch"
                            },
                            "name": "sketch"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 898,
                          "end": 906,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 39
                            },
                            "end": {
                              "line": 25,
                              "column": 47
                            },
                            "identifierName": "children"
                          },
                          "name": "children"
                        },
                        "computed": false
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 908,
                        "end": 1396,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 49
                          },
                          "end": {
                            "line": 37,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "SwitchStatement",
                            "start": 922,
                            "end": 1386,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 12
                              },
                              "end": {
                                "line": 36,
                                "column": 13
                              }
                            },
                            "discriminant": {
                              "type": "MemberExpression",
                              "start": 930,
                              "end": 948,
                              "loc": {
                                "start": {
                                  "line": 26,
                                  "column": 20
                                },
                                "end": {
                                  "line": 26,
                                  "column": 38
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 930,
                                "end": 942,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 32
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 930,
                                  "end": 936,
                                  "loc": {
                                    "start": {
                                      "line": 26,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 26,
                                      "column": 26
                                    },
                                    "identifierName": "object"
                                  },
                                  "name": "object"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 937,
                                  "end": 942,
                                  "loc": {
                                    "start": {
                                      "line": 26,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 26,
                                      "column": 32
                                    },
                                    "identifierName": "state"
                                  },
                                  "name": "state"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 943,
                                "end": 948,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 38
                                  },
                                  "identifierName": "class"
                                },
                                "name": "class"
                              },
                              "computed": false
                            },
                            "cases": [
                              {
                                "type": "SwitchCase",
                                "start": 968,
                                "end": 1106,
                                "loc": {
                                  "start": {
                                    "line": 27,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 29,
                                    "column": 26
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 1009,
                                    "end": 1079,
                                    "loc": {
                                      "start": {
                                        "line": 28,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 28,
                                        "column": 90
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 1009,
                                      "end": 1078,
                                      "loc": {
                                        "start": {
                                          "line": 28,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 28,
                                          "column": 89
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 1009,
                                        "end": 1032,
                                        "loc": {
                                          "start": {
                                            "line": 28,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 28,
                                            "column": 43
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 1009,
                                          "end": 1026,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 37
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 1009,
                                            "end": 1013,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 24
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1014,
                                            "end": 1026,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 25
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 37
                                              },
                                              "identifierName": "incidenceDsu"
                                            },
                                            "name": "incidenceDsu"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1027,
                                          "end": 1032,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 38
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 43
                                            },
                                            "identifierName": "merge"
                                          },
                                          "name": "merge"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1033,
                                          "end": 1054,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 44
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 65
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1033,
                                            "end": 1051,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 44
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 62
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1033,
                                              "end": 1048,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 59
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1033,
                                                "end": 1039,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 44
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 50
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1040,
                                                "end": 1048,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 51
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 59
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1049,
                                              "end": 1050,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 61
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1052,
                                            "end": 1054,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 63
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 65
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        },
                                        {
                                          "type": "MemberExpression",
                                          "start": 1056,
                                          "end": 1077,
                                          "loc": {
                                            "start": {
                                              "line": 28,
                                              "column": 67
                                            },
                                            "end": {
                                              "line": 28,
                                              "column": 88
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1056,
                                            "end": 1074,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 67
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 85
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1056,
                                              "end": 1071,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 67
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 82
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1056,
                                                "end": 1062,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 67
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 73
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1063,
                                                "end": 1071,
                                                "loc": {
                                                  "start": {
                                                    "line": 28,
                                                    "column": 74
                                                  },
                                                  "end": {
                                                    "line": 28,
                                                    "column": 82
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1072,
                                              "end": 1073,
                                              "loc": {
                                                "start": {
                                                  "line": 28,
                                                  "column": 83
                                                },
                                                "end": {
                                                  "line": 28,
                                                  "column": 84
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 1,
                                                "raw": "1"
                                              },
                                              "value": 1
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1075,
                                            "end": 1077,
                                            "loc": {
                                              "start": {
                                                "line": 28,
                                                "column": 86
                                              },
                                              "end": {
                                                "line": 28,
                                                "column": 88
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1100,
                                    "end": 1106,
                                    "loc": {
                                      "start": {
                                        "line": 29,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 29,
                                        "column": 26
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 973,
                                  "end": 987,
                                  "loc": {
                                    "start": {
                                      "line": 27,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 27,
                                      "column": 35
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 973,
                                    "end": 982,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 30
                                      },
                                      "identifierName": "incidence"
                                    },
                                    "name": "incidence"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 983,
                                    "end": 987,
                                    "loc": {
                                      "start": {
                                        "line": 27,
                                        "column": 31
                                      },
                                      "end": {
                                        "line": 27,
                                        "column": 35
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              },
                              {
                                "type": "SwitchCase",
                                "start": 1123,
                                "end": 1237,
                                "loc": {
                                  "start": {
                                    "line": 30,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 26
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 1166,
                                    "end": 1210,
                                    "loc": {
                                      "start": {
                                        "line": 31,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 31,
                                        "column": 64
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 1166,
                                      "end": 1209,
                                      "loc": {
                                        "start": {
                                          "line": 31,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 31,
                                          "column": 63
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 1166,
                                        "end": 1186,
                                        "loc": {
                                          "start": {
                                            "line": 31,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 31,
                                            "column": 40
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 1166,
                                          "end": 1182,
                                          "loc": {
                                            "start": {
                                              "line": 31,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 31,
                                              "column": 36
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 1166,
                                            "end": 1170,
                                            "loc": {
                                              "start": {
                                                "line": 31,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 31,
                                                "column": 24
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1171,
                                            "end": 1182,
                                            "loc": {
                                              "start": {
                                                "line": 31,
                                                "column": 25
                                              },
                                              "end": {
                                                "line": 31,
                                                "column": 36
                                              },
                                              "identifierName": "verticalSet"
                                            },
                                            "name": "verticalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1183,
                                          "end": 1186,
                                          "loc": {
                                            "start": {
                                              "line": 31,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 31,
                                              "column": 40
                                            },
                                            "identifierName": "add"
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1187,
                                          "end": 1208,
                                          "loc": {
                                            "start": {
                                              "line": 31,
                                              "column": 41
                                            },
                                            "end": {
                                              "line": 31,
                                              "column": 62
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1187,
                                            "end": 1205,
                                            "loc": {
                                              "start": {
                                                "line": 31,
                                                "column": 41
                                              },
                                              "end": {
                                                "line": 31,
                                                "column": 59
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1187,
                                              "end": 1202,
                                              "loc": {
                                                "start": {
                                                  "line": 31,
                                                  "column": 41
                                                },
                                                "end": {
                                                  "line": 31,
                                                  "column": 56
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1187,
                                                "end": 1193,
                                                "loc": {
                                                  "start": {
                                                    "line": 31,
                                                    "column": 41
                                                  },
                                                  "end": {
                                                    "line": 31,
                                                    "column": 47
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1194,
                                                "end": 1202,
                                                "loc": {
                                                  "start": {
                                                    "line": 31,
                                                    "column": 48
                                                  },
                                                  "end": {
                                                    "line": 31,
                                                    "column": 56
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1203,
                                              "end": 1204,
                                              "loc": {
                                                "start": {
                                                  "line": 31,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 31,
                                                  "column": 58
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1206,
                                            "end": 1208,
                                            "loc": {
                                              "start": {
                                                "line": 31,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 31,
                                                "column": 62
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1231,
                                    "end": 1237,
                                    "loc": {
                                      "start": {
                                        "line": 32,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 32,
                                        "column": 26
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 1128,
                                  "end": 1144,
                                  "loc": {
                                    "start": {
                                      "line": 30,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 30,
                                      "column": 37
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1128,
                                    "end": 1139,
                                    "loc": {
                                      "start": {
                                        "line": 30,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 30,
                                        "column": 32
                                      },
                                      "identifierName": "verticality"
                                    },
                                    "name": "verticality"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1140,
                                    "end": 1144,
                                    "loc": {
                                      "start": {
                                        "line": 30,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 30,
                                        "column": 37
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              },
                              {
                                "type": "SwitchCase",
                                "start": 1254,
                                "end": 1372,
                                "loc": {
                                  "start": {
                                    "line": 33,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 35,
                                    "column": 26
                                  }
                                },
                                "consequent": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 1299,
                                    "end": 1345,
                                    "loc": {
                                      "start": {
                                        "line": 34,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 34,
                                        "column": 66
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 1299,
                                      "end": 1344,
                                      "loc": {
                                        "start": {
                                          "line": 34,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 34,
                                          "column": 65
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 1299,
                                        "end": 1321,
                                        "loc": {
                                          "start": {
                                            "line": 34,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 34,
                                            "column": 42
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 1299,
                                          "end": 1317,
                                          "loc": {
                                            "start": {
                                              "line": 34,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 34,
                                              "column": 38
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 1299,
                                            "end": 1303,
                                            "loc": {
                                              "start": {
                                                "line": 34,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 34,
                                                "column": 24
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1304,
                                            "end": 1317,
                                            "loc": {
                                              "start": {
                                                "line": 34,
                                                "column": 25
                                              },
                                              "end": {
                                                "line": 34,
                                                "column": 38
                                              },
                                              "identifierName": "horizontalSet"
                                            },
                                            "name": "horizontalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 1318,
                                          "end": 1321,
                                          "loc": {
                                            "start": {
                                              "line": 34,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 34,
                                              "column": 42
                                            },
                                            "identifierName": "add"
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 1322,
                                          "end": 1343,
                                          "loc": {
                                            "start": {
                                              "line": 34,
                                              "column": 43
                                            },
                                            "end": {
                                              "line": 34,
                                              "column": 64
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 1322,
                                            "end": 1340,
                                            "loc": {
                                              "start": {
                                                "line": 34,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 34,
                                                "column": 61
                                              }
                                            },
                                            "object": {
                                              "type": "MemberExpression",
                                              "start": 1322,
                                              "end": 1337,
                                              "loc": {
                                                "start": {
                                                  "line": 34,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 34,
                                                  "column": 58
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 1322,
                                                "end": 1328,
                                                "loc": {
                                                  "start": {
                                                    "line": 34,
                                                    "column": 43
                                                  },
                                                  "end": {
                                                    "line": 34,
                                                    "column": 49
                                                  },
                                                  "identifierName": "object"
                                                },
                                                "name": "object"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 1329,
                                                "end": 1337,
                                                "loc": {
                                                  "start": {
                                                    "line": 34,
                                                    "column": 50
                                                  },
                                                  "end": {
                                                    "line": 34,
                                                    "column": 58
                                                  },
                                                  "identifierName": "entities"
                                                },
                                                "name": "entities"
                                              },
                                              "computed": false
                                            },
                                            "property": {
                                              "type": "NumericLiteral",
                                              "start": 1338,
                                              "end": 1339,
                                              "loc": {
                                                "start": {
                                                  "line": 34,
                                                  "column": 59
                                                },
                                                "end": {
                                                  "line": 34,
                                                  "column": 60
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            },
                                            "computed": true
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 1341,
                                            "end": 1343,
                                            "loc": {
                                              "start": {
                                                "line": 34,
                                                "column": 62
                                              },
                                              "end": {
                                                "line": 34,
                                                "column": 64
                                              },
                                              "identifierName": "id"
                                            },
                                            "name": "id"
                                          },
                                          "computed": false
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "BreakStatement",
                                    "start": 1366,
                                    "end": 1372,
                                    "loc": {
                                      "start": {
                                        "line": 35,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 35,
                                        "column": 26
                                      }
                                    },
                                    "label": null
                                  }
                                ],
                                "test": {
                                  "type": "MemberExpression",
                                  "start": 1259,
                                  "end": 1277,
                                  "loc": {
                                    "start": {
                                      "line": 33,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 33,
                                      "column": 39
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1259,
                                    "end": 1272,
                                    "loc": {
                                      "start": {
                                        "line": 33,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 33,
                                        "column": 34
                                      },
                                      "identifierName": "horizontality"
                                    },
                                    "name": "horizontality"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1273,
                                    "end": 1277,
                                    "loc": {
                                      "start": {
                                        "line": 33,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 33,
                                        "column": 39
                                      },
                                      "identifierName": "type"
                                    },
                                    "name": "type"
                                  },
                                  "computed": false
                                }
                              }
                            ]
                          }
                        ],
                        "directives": []
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " take all present constraints into account",
                          "start": 814,
                          "end": 858,
                          "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": 1408,
                    "end": 1479,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 4
                      },
                      "end": {
                        "line": 40,
                        "column": 75
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassMethod",
                "start": 1484,
                "end": 3062,
                "loc": {
                  "start": {
                    "line": 41,
                    "column": 4
                  },
                  "end": {
                    "line": 71,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1484,
                  "end": 1487,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 4
                    },
                    "end": {
                      "line": 41,
                      "column": 7
                    },
                    "identifierName": "add"
                  },
                  "name": "add",
                  "leadingComments": null
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1488,
                    "end": 1492,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 8
                      },
                      "end": {
                        "line": 41,
                        "column": 12
                      },
                      "identifierName": "type"
                    },
                    "name": "type"
                  },
                  {
                    "type": "Identifier",
                    "start": 1494,
                    "end": 1502,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 14
                      },
                      "end": {
                        "line": 41,
                        "column": 22
                      },
                      "identifierName": "entities"
                    },
                    "name": "entities"
                  },
                  {
                    "type": "AssignmentPattern",
                    "start": 1504,
                    "end": 1514,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 24
                      },
                      "end": {
                        "line": 41,
                        "column": 34
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 1504,
                      "end": 1509,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 24
                        },
                        "end": {
                          "line": 41,
                          "column": 29
                        },
                        "identifierName": "value"
                      },
                      "name": "value"
                    },
                    "right": {
                      "type": "ObjectExpression",
                      "start": 1512,
                      "end": 1514,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 32
                        },
                        "end": {
                          "line": 41,
                          "column": 34
                        }
                      },
                      "properties": []
                    }
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1516,
                  "end": 3062,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 36
                    },
                    "end": {
                      "line": 71,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 1526,
                      "end": 1572,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 8
                        },
                        "end": {
                          "line": 42,
                          "column": 54
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 1530,
                        "end": 1553,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 12
                          },
                          "end": {
                            "line": 42,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 1530,
                          "end": 1539,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 12
                            },
                            "end": {
                              "line": 42,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1530,
                            "end": 1534,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 12
                              },
                              "end": {
                                "line": 42,
                                "column": 16
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1535,
                            "end": 1539,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 17
                              },
                              "end": {
                                "line": 42,
                                "column": 21
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "computed": false
                        },
                        "operator": "!==",
                        "right": {
                          "type": "Identifier",
                          "start": 1544,
                          "end": 1553,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 26
                            },
                            "end": {
                              "line": 42,
                              "column": 35
                            },
                            "identifierName": "undefined"
                          },
                          "name": "undefined"
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 1555,
                        "end": 1572,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 37
                          },
                          "end": {
                            "line": 42,
                            "column": 54
                          }
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "start": 1555,
                          "end": 1571,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 37
                            },
                            "end": {
                              "line": 42,
                              "column": 53
                            }
                          },
                          "operator": "=",
                          "left": {
                            "type": "Identifier",
                            "start": 1555,
                            "end": 1559,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 37
                              },
                              "end": {
                                "line": 42,
                                "column": 41
                              },
                              "identifierName": "type"
                            },
                            "name": "type"
                          },
                          "right": {
                            "type": "MemberExpression",
                            "start": 1562,
                            "end": 1571,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 44
                              },
                              "end": {
                                "line": 42,
                                "column": 53
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1562,
                              "end": 1566,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 44
                                },
                                "end": {
                                  "line": 42,
                                  "column": 48
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1567,
                              "end": 1571,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 49
                                },
                                "end": {
                                  "line": 42,
                                  "column": 53
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 1581,
                      "end": 1633,
                      "loc": {
                        "start": {
                          "line": 43,
                          "column": 8
                        },
                        "end": {
                          "line": 43,
                          "column": 60
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1587,
                          "end": 1632,
                          "loc": {
                            "start": {
                              "line": 43,
                              "column": 14
                            },
                            "end": {
                              "line": 43,
                              "column": 59
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1587,
                            "end": 1597,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 14
                              },
                              "end": {
                                "line": 43,
                                "column": 24
                              },
                              "identifierName": "geomParams"
                            },
                            "name": "geomParams"
                          },
                          "init": {
                            "type": "ObjectExpression",
                            "start": 1600,
                            "end": 1632,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 27
                              },
                              "end": {
                                "line": 43,
                                "column": 59
                              }
                            },
                            "properties": [
                              {
                                "type": "ObjectProperty",
                                "start": 1602,
                                "end": 1613,
                                "loc": {
                                  "start": {
                                    "line": 43,
                                    "column": 29
                                  },
                                  "end": {
                                    "line": 43,
                                    "column": 40
                                  }
                                },
                                "method": false,
                                "shorthand": false,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1602,
                                  "end": 1607,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 29
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 34
                                    },
                                    "identifierName": "class"
                                  },
                                  "name": "class"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1609,
                                  "end": 1613,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 40
                                    },
                                    "identifierName": "type"
                                  },
                                  "name": "type"
                                }
                              },
                              {
                                "type": "ObjectProperty",
                                "start": 1615,
                                "end": 1623,
                                "loc": {
                                  "start": {
                                    "line": 43,
                                    "column": 42
                                  },
                                  "end": {
                                    "line": 43,
                                    "column": 50
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1615,
                                  "end": 1623,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 50
                                    },
                                    "identifierName": "entities"
                                  },
                                  "name": "entities"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1615,
                                  "end": 1623,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 50
                                    },
                                    "identifierName": "entities"
                                  },
                                  "name": "entities"
                                },
                                "extra": {
                                  "shorthand": true
                                }
                              },
                              {
                                "type": "ObjectProperty",
                                "start": 1625,
                                "end": 1630,
                                "loc": {
                                  "start": {
                                    "line": 43,
                                    "column": 52
                                  },
                                  "end": {
                                    "line": 43,
                                    "column": 57
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1625,
                                  "end": 1630,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 52
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 57
                                    },
                                    "identifierName": "value"
                                  },
                                  "name": "value"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1625,
                                  "end": 1630,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 52
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 57
                                    },
                                    "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": 1642,
                          "end": 1708,
                          "loc": {
                            "start": {
                              "line": 44,
                              "column": 8
                            },
                            "end": {
                              "line": 44,
                              "column": 74
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "SwitchStatement",
                      "start": 1717,
                      "end": 3013,
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 8
                        },
                        "end": {
                          "line": 69,
                          "column": 9
                        }
                      },
                      "discriminant": {
                        "type": "Identifier",
                        "start": 1725,
                        "end": 1729,
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 16
                          },
                          "end": {
                            "line": 45,
                            "column": 20
                          },
                          "identifierName": "type"
                        },
                        "name": "type",
                        "leadingComments": null
                      },
                      "cases": [
                        {
                          "type": "SwitchCase",
                          "start": 1745,
                          "end": 2307,
                          "loc": {
                            "start": {
                              "line": 46,
                              "column": 12
                            },
                            "end": {
                              "line": 54,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2066,
                              "end": 2284,
                              "loc": {
                                "start": {
                                  "line": 50,
                                  "column": 16
                                },
                                "end": {
                                  "line": 53,
                                  "column": 27
                                }
                              },
                              "test": {
                                "type": "BinaryExpression",
                                "start": 2070,
                                "end": 2157,
                                "loc": {
                                  "start": {
                                    "line": 50,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 50,
                                    "column": 107
                                  }
                                },
                                "left": {
                                  "type": "CallExpression",
                                  "start": 2070,
                                  "end": 2111,
                                  "loc": {
                                    "start": {
                                      "line": 50,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 50,
                                      "column": 61
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2070,
                                    "end": 2095,
                                    "loc": {
                                      "start": {
                                        "line": 50,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 50,
                                        "column": 45
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2070,
                                      "end": 2087,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2070,
                                        "end": 2074,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 24
                                          }
                                        },
                                        "leadingComments": null
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2075,
                                        "end": 2087,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 37
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false,
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2088,
                                      "end": 2095,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 45
                                        },
                                        "identifierName": "getHead"
                                      },
                                      "name": "getHead"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2096,
                                      "end": 2110,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 46
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 60
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2096,
                                        "end": 2107,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 46
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 57
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2096,
                                          "end": 2104,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 46
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 54
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2105,
                                          "end": 2106,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 55
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 56
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2108,
                                        "end": 2110,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 58
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 60
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ],
                                  "leadingComments": null
                                },
                                "operator": "!==",
                                "right": {
                                  "type": "CallExpression",
                                  "start": 2116,
                                  "end": 2157,
                                  "loc": {
                                    "start": {
                                      "line": 50,
                                      "column": 66
                                    },
                                    "end": {
                                      "line": 50,
                                      "column": 107
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2116,
                                    "end": 2141,
                                    "loc": {
                                      "start": {
                                        "line": 50,
                                        "column": 66
                                      },
                                      "end": {
                                        "line": 50,
                                        "column": 91
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2116,
                                      "end": 2133,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 66
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 83
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2116,
                                        "end": 2120,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 66
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 70
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2121,
                                        "end": 2133,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 71
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 83
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2134,
                                      "end": 2141,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 84
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 91
                                        },
                                        "identifierName": "getHead"
                                      },
                                      "name": "getHead"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2142,
                                      "end": 2156,
                                      "loc": {
                                        "start": {
                                          "line": 50,
                                          "column": 92
                                        },
                                        "end": {
                                          "line": 50,
                                          "column": 106
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2142,
                                        "end": 2153,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 92
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 103
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2142,
                                          "end": 2150,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 92
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 100
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2151,
                                          "end": 2152,
                                          "loc": {
                                            "start": {
                                              "line": 50,
                                              "column": 101
                                            },
                                            "end": {
                                              "line": 50,
                                              "column": 102
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 1,
                                            "raw": "1"
                                          },
                                          "value": 1
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2154,
                                        "end": 2156,
                                        "loc": {
                                          "start": {
                                            "line": 50,
                                            "column": 104
                                          },
                                          "end": {
                                            "line": 50,
                                            "column": 106
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "leadingComments": null
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2179,
                                "end": 2235,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 76
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2179,
                                  "end": 2234,
                                  "loc": {
                                    "start": {
                                      "line": 51,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 51,
                                      "column": 75
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2179,
                                    "end": 2202,
                                    "loc": {
                                      "start": {
                                        "line": 51,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 51,
                                        "column": 43
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2179,
                                      "end": 2196,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2179,
                                        "end": 2183,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 24
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2184,
                                        "end": 2196,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 37
                                          },
                                          "identifierName": "incidenceDsu"
                                        },
                                        "name": "incidenceDsu"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2197,
                                      "end": 2202,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 43
                                        },
                                        "identifierName": "merge"
                                      },
                                      "name": "merge"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2203,
                                      "end": 2217,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 44
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 58
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2203,
                                        "end": 2214,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 55
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2203,
                                          "end": 2211,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 44
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 52
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2212,
                                          "end": 2213,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 54
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2215,
                                        "end": 2217,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 58
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 2219,
                                      "end": 2233,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 60
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 74
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2219,
                                        "end": 2230,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 60
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 71
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2219,
                                          "end": 2227,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 68
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2228,
                                          "end": 2229,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 69
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 70
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 1,
                                            "raw": "1"
                                          },
                                          "value": 1
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2231,
                                        "end": 2233,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 72
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 74
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2277,
                                "end": 2284,
                                "loc": {
                                  "start": {
                                    "line": 53,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 53,
                                    "column": 27
                                  }
                                },
                                "argument": null
                              },
                              "leadingComments": [
                                {
                                  "type": "CommentLine",
                                  "value": " TODO: implement more complicated handling of incidence",
                                  "start": 1782,
                                  "end": 1839,
                                  "loc": {
                                    "start": {
                                      "line": 47,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 47,
                                      "column": 73
                                    }
                                  }
                                },
                                {
                                  "type": "CommentLine",
                                  "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
                                  "start": 1856,
                                  "end": 1949,
                                  "loc": {
                                    "start": {
                                      "line": 48,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 48,
                                      "column": 109
                                    }
                                  }
                                },
                                {
                                  "type": "CommentLine",
                                  "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
                                  "start": 1966,
                                  "end": 2049,
                                  "loc": {
                                    "start": {
                                      "line": 49,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 49,
                                      "column": 99
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2301,
                              "end": 2307,
                              "loc": {
                                "start": {
                                  "line": 54,
                                  "column": 16
                                },
                                "end": {
                                  "line": 54,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 1750,
                            "end": 1764,
                            "loc": {
                              "start": {
                                "line": 46,
                                "column": 17
                              },
                              "end": {
                                "line": 46,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1750,
                              "end": 1759,
                              "loc": {
                                "start": {
                                  "line": 46,
                                  "column": 17
                                },
                                "end": {
                                  "line": 46,
                                  "column": 26
                                },
                                "identifierName": "incidence"
                              },
                              "name": "incidence"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1760,
                              "end": 1764,
                              "loc": {
                                "start": {
                                  "line": 46,
                                  "column": 27
                                },
                                "end": {
                                  "line": 46,
                                  "column": 31
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2320,
                          "end": 2491,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 12
                            },
                            "end": {
                              "line": 58,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2359,
                              "end": 2468,
                              "loc": {
                                "start": {
                                  "line": 56,
                                  "column": 16
                                },
                                "end": {
                                  "line": 57,
                                  "column": 28
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 2363,
                                "end": 2400,
                                "loc": {
                                  "start": {
                                    "line": 56,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 56,
                                    "column": 57
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 2364,
                                  "end": 2400,
                                  "loc": {
                                    "start": {
                                      "line": 56,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 56,
                                      "column": 57
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2364,
                                    "end": 2384,
                                    "loc": {
                                      "start": {
                                        "line": 56,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 56,
                                        "column": 41
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2364,
                                      "end": 2380,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 37
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2364,
                                        "end": 2368,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 25
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2369,
                                        "end": 2380,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 37
                                          },
                                          "identifierName": "verticalSet"
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2381,
                                      "end": 2384,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 41
                                        },
                                        "identifierName": "has"
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2385,
                                      "end": 2399,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 42
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 56
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2385,
                                        "end": 2396,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 42
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 53
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2385,
                                          "end": 2393,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 42
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 50
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2394,
                                          "end": 2395,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 51
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 52
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2397,
                                        "end": 2399,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 54
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 56
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "extra": {
                                  "parenthesizedArgument": false
                                }
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2402,
                                "end": 2439,
                                "loc": {
                                  "start": {
                                    "line": 56,
                                    "column": 59
                                  },
                                  "end": {
                                    "line": 56,
                                    "column": 96
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2402,
                                  "end": 2438,
                                  "loc": {
                                    "start": {
                                      "line": 56,
                                      "column": 59
                                    },
                                    "end": {
                                      "line": 56,
                                      "column": 95
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2402,
                                    "end": 2422,
                                    "loc": {
                                      "start": {
                                        "line": 56,
                                        "column": 59
                                      },
                                      "end": {
                                        "line": 56,
                                        "column": 79
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2402,
                                      "end": 2418,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 59
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 75
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2402,
                                        "end": 2406,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 59
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 63
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2407,
                                        "end": 2418,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 64
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 75
                                          },
                                          "identifierName": "verticalSet"
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2419,
                                      "end": 2422,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 76
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 79
                                        },
                                        "identifierName": "add"
                                      },
                                      "name": "add"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2423,
                                      "end": 2437,
                                      "loc": {
                                        "start": {
                                          "line": 56,
                                          "column": 80
                                        },
                                        "end": {
                                          "line": 56,
                                          "column": 94
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2423,
                                        "end": 2434,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 80
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 91
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2423,
                                          "end": 2431,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 80
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 88
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2432,
                                          "end": 2433,
                                          "loc": {
                                            "start": {
                                              "line": 56,
                                              "column": 89
                                            },
                                            "end": {
                                              "line": 56,
                                              "column": 90
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2435,
                                        "end": 2437,
                                        "loc": {
                                          "start": {
                                            "line": 56,
                                            "column": 92
                                          },
                                          "end": {
                                            "line": 56,
                                            "column": 94
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2461,
                                "end": 2468,
                                "loc": {
                                  "start": {
                                    "line": 57,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 57,
                                    "column": 28
                                  }
                                },
                                "argument": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2485,
                              "end": 2491,
                              "loc": {
                                "start": {
                                  "line": 58,
                                  "column": 16
                                },
                                "end": {
                                  "line": 58,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 2325,
                            "end": 2341,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 17
                              },
                              "end": {
                                "line": 55,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2325,
                              "end": 2336,
                              "loc": {
                                "start": {
                                  "line": 55,
                                  "column": 17
                                },
                                "end": {
                                  "line": 55,
                                  "column": 28
                                },
                                "identifierName": "verticality"
                              },
                              "name": "verticality"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2337,
                              "end": 2341,
                              "loc": {
                                "start": {
                                  "line": 55,
                                  "column": 29
                                },
                                "end": {
                                  "line": 55,
                                  "column": 33
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2504,
                          "end": 2681,
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 12
                            },
                            "end": {
                              "line": 62,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2545,
                              "end": 2658,
                              "loc": {
                                "start": {
                                  "line": 60,
                                  "column": 16
                                },
                                "end": {
                                  "line": 61,
                                  "column": 28
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 2549,
                                "end": 2588,
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 59
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 2550,
                                  "end": 2588,
                                  "loc": {
                                    "start": {
                                      "line": 60,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 60,
                                      "column": 59
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2550,
                                    "end": 2572,
                                    "loc": {
                                      "start": {
                                        "line": 60,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 60,
                                        "column": 43
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2550,
                                      "end": 2568,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2550,
                                        "end": 2554,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 25
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2555,
                                        "end": 2568,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 39
                                          },
                                          "identifierName": "horizontalSet"
                                        },
                                        "name": "horizontalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2569,
                                      "end": 2572,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 40
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 43
                                        },
                                        "identifierName": "has"
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2573,
                                      "end": 2587,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 44
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 58
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2573,
                                        "end": 2584,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 55
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2573,
                                          "end": 2581,
                                          "loc": {
                                            "start": {
                                              "line": 60,
                                              "column": 44
                                            },
                                            "end": {
                                              "line": 60,
                                              "column": 52
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2582,
                                          "end": 2583,
                                          "loc": {
                                            "start": {
                                              "line": 60,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 60,
                                              "column": 54
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2585,
                                        "end": 2587,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 58
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "extra": {
                                  "parenthesizedArgument": false
                                }
                              },
                              "consequent": {
                                "type": "ExpressionStatement",
                                "start": 2590,
                                "end": 2629,
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 61
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 100
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 2590,
                                  "end": 2628,
                                  "loc": {
                                    "start": {
                                      "line": 60,
                                      "column": 61
                                    },
                                    "end": {
                                      "line": 60,
                                      "column": 99
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2590,
                                    "end": 2612,
                                    "loc": {
                                      "start": {
                                        "line": 60,
                                        "column": 61
                                      },
                                      "end": {
                                        "line": 60,
                                        "column": 83
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2590,
                                      "end": 2608,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 61
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 79
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2590,
                                        "end": 2594,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 61
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 65
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2595,
                                        "end": 2608,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 66
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 79
                                          },
                                          "identifierName": "horizontalSet"
                                        },
                                        "name": "horizontalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2609,
                                      "end": 2612,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 80
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 83
                                        },
                                        "identifierName": "add"
                                      },
                                      "name": "add"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 2613,
                                      "end": 2627,
                                      "loc": {
                                        "start": {
                                          "line": 60,
                                          "column": 84
                                        },
                                        "end": {
                                          "line": 60,
                                          "column": 98
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2613,
                                        "end": 2624,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 84
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 95
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2613,
                                          "end": 2621,
                                          "loc": {
                                            "start": {
                                              "line": 60,
                                              "column": 84
                                            },
                                            "end": {
                                              "line": 60,
                                              "column": 92
                                            },
                                            "identifierName": "entities"
                                          },
                                          "name": "entities"
                                        },
                                        "property": {
                                          "type": "NumericLiteral",
                                          "start": 2622,
                                          "end": 2623,
                                          "loc": {
                                            "start": {
                                              "line": 60,
                                              "column": 93
                                            },
                                            "end": {
                                              "line": 60,
                                              "column": 94
                                            }
                                          },
                                          "extra": {
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "value": 0
                                        },
                                        "computed": true
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2625,
                                        "end": 2627,
                                        "loc": {
                                          "start": {
                                            "line": 60,
                                            "column": 96
                                          },
                                          "end": {
                                            "line": 60,
                                            "column": 98
                                          },
                                          "identifierName": "id"
                                        },
                                        "name": "id"
                                      },
                                      "computed": false
                                    }
                                  ]
                                }
                              },
                              "alternate": {
                                "type": "ReturnStatement",
                                "start": 2651,
                                "end": 2658,
                                "loc": {
                                  "start": {
                                    "line": 61,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 61,
                                    "column": 28
                                  }
                                },
                                "argument": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2675,
                              "end": 2681,
                              "loc": {
                                "start": {
                                  "line": 62,
                                  "column": 16
                                },
                                "end": {
                                  "line": 62,
                                  "column": 22
                                }
                              },
                              "label": null
                            }
                          ],
                          "test": {
                            "type": "MemberExpression",
                            "start": 2509,
                            "end": 2527,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 17
                              },
                              "end": {
                                "line": 59,
                                "column": 35
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2509,
                              "end": 2522,
                              "loc": {
                                "start": {
                                  "line": 59,
                                  "column": 17
                                },
                                "end": {
                                  "line": 59,
                                  "column": 30
                                },
                                "identifierName": "horizontality"
                              },
                              "name": "horizontality"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2523,
                              "end": 2527,
                              "loc": {
                                "start": {
                                  "line": 59,
                                  "column": 31
                                },
                                "end": {
                                  "line": 59,
                                  "column": 35
                                },
                                "identifierName": "type"
                              },
                              "name": "type"
                            },
                            "computed": false
                          }
                        },
                        {
                          "type": "SwitchCase",
                          "start": 2694,
                          "end": 3003,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 12
                            },
                            "end": {
                              "line": 68,
                              "column": 22
                            }
                          },
                          "consequent": [
                            {
                              "type": "IfStatement",
                              "start": 2770,
                              "end": 2847,
                              "loc": {
                                "start": {
                                  "line": 65,
                                  "column": 16
                                },
                                "end": {
                                  "line": 65,
                                  "column": 93
                                }
                              },
                              "test": {
                                "type": "CallExpression",
                                "start": 2774,
                                "end": 2838,
                                "loc": {
                                  "start": {
                                    "line": 65,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 65,
                                    "column": 84
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2774,
                                  "end": 2795,
                                  "loc": {
                                    "start": {
                                      "line": 65,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 65,
                                      "column": 41
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2774,
                                    "end": 2790,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 36
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2774,
                                      "end": 2778,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 24
                                        }
                                      },
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2779,
                                      "end": 2790,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 25
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 36
                                        },
                                        "identifierName": "constraints"
                                      },
                                      "name": "constraints"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2791,
                                    "end": 2795,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 41
                                      },
                                      "identifierName": "some"
                                    },
                                    "name": "some"
                                  },
                                  "computed": false,
                                  "leadingComments": null
                                },
                                "arguments": [
                                  {
                                    "type": "ArrowFunctionExpression",
                                    "start": 2796,
                                    "end": 2837,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 83
                                      }
                                    },
                                    "id": null,
                                    "generator": false,
                                    "expression": true,
                                    "async": false,
                                    "params": [
                                      {
                                        "type": "Identifier",
                                        "start": 2796,
                                        "end": 2802,
                                        "loc": {
                                          "start": {
                                            "line": 65,
                                            "column": 42
                                          },
                                          "end": {
                                            "line": 65,
                                            "column": 48
                                          },
                                          "identifierName": "constr"
                                        },
                                        "name": "constr"
                                      }
                                    ],
                                    "body": {
                                      "type": "CallExpression",
                                      "start": 2806,
                                      "end": 2837,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 83
                                        }
                                      },
                                      "callee": {
                                        "type": "Identifier",
                                        "start": 2806,
                                        "end": 2817,
                                        "loc": {
                                          "start": {
                                            "line": 65,
                                            "column": 52
                                          },
                                          "end": {
                                            "line": 65,
                                            "column": 63
                                          },
                                          "identifierName": "isExcessive"
                                        },
                                        "name": "isExcessive"
                                      },
                                      "arguments": [
                                        {
                                          "type": "Identifier",
                                          "start": 2818,
                                          "end": 2828,
                                          "loc": {
                                            "start": {
                                              "line": 65,
                                              "column": 64
                                            },
                                            "end": {
                                              "line": 65,
                                              "column": 74
                                            },
                                            "identifierName": "geomParams"
                                          },
                                          "name": "geomParams"
                                        },
                                        {
                                          "type": "Identifier",
                                          "start": 2830,
                                          "end": 2836,
                                          "loc": {
                                            "start": {
                                              "line": 65,
                                              "column": 76
                                            },
                                            "end": {
                                              "line": 65,
                                              "column": 82
                                            },
                                            "identifierName": "constr"
                                          },
                                          "name": "constr"
                                        }
                                      ]
                                    }
                                  }
                                ],
                                "leadingComments": null
                              },
                              "consequent": {
                                "type": "ReturnStatement",
                                "start": 2840,
                                "end": 2847,
                                "loc": {
                                  "start": {
                                    "line": 65,
                                    "column": 86
                                  },
                                  "end": {
                                    "line": 65,
                                    "column": 93
                                  }
                                },
                                "argument": null
                              },
                              "alternate": null,
                              "leadingComments": [
                                {
                                  "type": "CommentLine",
                                  "value": " TODO: optimize this O(N) search",
                                  "start": 2719,
                                  "end": 2753,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 50
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "ForOfStatement",
                              "start": 2864,
                              "end": 2980,
                              "loc": {
                                "start": {
                                  "line": 66,
                                  "column": 16
                                },
                                "end": {
                                  "line": 67,
                                  "column": 75
                                }
                              },
                              "left": {
                                "type": "VariableDeclaration",
                                "start": 2869,
                                "end": 2879,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 31
                                  }
                                },
                                "declarations": [
                                  {
                                    "type": "VariableDeclarator",
                                    "start": 2873,
                                    "end": 2879,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 25
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 31
                                      }
                                    },
                                    "id": {
                                      "type": "Identifier",
                                      "start": 2873,
                                      "end": 2879,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 25
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 31
                                        },
                                        "identifierName": "object"
                                      },
                                      "name": "object"
                                    },
                                    "init": null
                                  }
                                ],
                                "kind": "let"
                              },
                              "right": {
                                "type": "MemberExpression",
                                "start": 2883,
                                "end": 2903,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 55
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2883,
                                  "end": 2894,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 46
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 2883,
                                    "end": 2887,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 39
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2888,
                                    "end": 2894,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 40
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 46
                                      },
                                      "identifierName": "sketch"
                                    },
                                    "name": "sketch"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2895,
                                  "end": 2903,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 47
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 55
                                    },
                                    "identifierName": "children"
                                  },
                                  "name": "children"
                                },
                                "computed": false
                              },
                              "body": {
                                "type": "IfStatement",
                                "start": 2925,
                                "end": 2980,
                                "loc": {
                                  "start": {
                                    "line": 67,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 67,
                                    "column": 75
                                  }
                                },
                                "test": {
                                  "type": "CallExpression",
                                  "start": 2929,
                                  "end": 2971,
                                  "loc": {
                                    "start": {
                                      "line": 67,
                                      "column": 24
                                    },
                                    "end": {
                                      "line": 67,
                                      "column": 66
                                    }
                                  },
                                  "callee": {
                                    "type": "Identifier",
                                    "start": 2929,
                                    "end": 2940,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 24
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 35
                                      },
                                      "identifierName": "isExcessive"
                                    },
                                    "name": "isExcessive"
                                  },
                                  "arguments": [
                                    {
                                      "type": "Identifier",
                                      "start": 2941,
                                      "end": 2951,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 46
                                        },
                                        "identifierName": "geomParams"
                                      },
                                      "name": "geomParams"
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 2953,
                                      "end": 2970,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 65
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2953,
                                        "end": 2959,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 54
                                          },
                                          "identifierName": "object"
                                        },
                                        "name": "object"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2960,
                                        "end": 2970,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 55
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 65
                                          },
                                          "identifierName": "geomParams"
                                        },
                                        "name": "geomParams"
                                      },
                                      "computed": false
                                    }
                                  ]
                                },
                                "consequent": {
                                  "type": "ReturnStatement",
                                  "start": 2973,
                                  "end": 2980,
                                  "loc": {
                                    "start": {
                                      "line": 67,
                                      "column": 68
                                    },
                                    "end": {
                                      "line": 67,
                                      "column": 75
                                    }
                                  },
                                  "argument": null
                                },
                                "alternate": null
                              }
                            },
                            {
                              "type": "BreakStatement",
                              "start": 2997,
                              "end": 3003,
                              "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": 1642,
                          "end": 1708,
                          "loc": {
                            "start": {
                              "line": 44,
                              "column": 8
                            },
                            "end": {
                              "line": 44,
                              "column": 74
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3022,
                      "end": 3056,
                      "loc": {
                        "start": {
                          "line": 70,
                          "column": 8
                        },
                        "end": {
                          "line": 70,
                          "column": 42
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 3022,
                        "end": 3055,
                        "loc": {
                          "start": {
                            "line": 70,
                            "column": 8
                          },
                          "end": {
                            "line": 70,
                            "column": 41
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 3022,
                          "end": 3043,
                          "loc": {
                            "start": {
                              "line": 70,
                              "column": 8
                            },
                            "end": {
                              "line": 70,
                              "column": 29
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3022,
                            "end": 3038,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 8
                              },
                              "end": {
                                "line": 70,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 3022,
                              "end": 3026,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 8
                                },
                                "end": {
                                  "line": 70,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3027,
                              "end": 3038,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 13
                                },
                                "end": {
                                  "line": 70,
                                  "column": 24
                                },
                                "identifierName": "constraints"
                              },
                              "name": "constraints"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3039,
                            "end": 3043,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 25
                              },
                              "end": {
                                "line": 70,
                                "column": 29
                              },
                              "identifierName": "push"
                            },
                            "name": "push"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 3044,
                            "end": 3054,
                            "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": 1408,
                    "end": 1479,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 4
                      },
                      "end": {
                        "line": 40,
                        "column": 75
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " return constraint statements in the internal buffer, clear the buffer",
                    "start": 3068,
                    "end": 3140,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 4
                      },
                      "end": {
                        "line": 73,
                        "column": 76
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassMethod",
                "start": 3145,
                "end": 3319,
                "loc": {
                  "start": {
                    "line": 74,
                    "column": 4
                  },
                  "end": {
                    "line": 78,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 3145,
                  "end": 3151,
                  "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": 3154,
                  "end": 3319,
                  "loc": {
                    "start": {
                      "line": 74,
                      "column": 13
                    },
                    "end": {
                      "line": 78,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 3164,
                      "end": 3255,
                      "loc": {
                        "start": {
                          "line": 75,
                          "column": 8
                        },
                        "end": {
                          "line": 75,
                          "column": 99
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 3170,
                          "end": 3254,
                          "loc": {
                            "start": {
                              "line": 75,
                              "column": 14
                            },
                            "end": {
                              "line": 75,
                              "column": 98
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 3170,
                            "end": 3180,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 14
                              },
                              "end": {
                                "line": 75,
                                "column": 24
                              },
                              "identifierName": "statements"
                            },
                            "name": "statements"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 3183,
                            "end": 3254,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 27
                              },
                              "end": {
                                "line": 75,
                                "column": 98
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 3183,
                              "end": 3203,
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 27
                                },
                                "end": {
                                  "line": 75,
                                  "column": 47
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3183,
                                "end": 3199,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 43
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 3183,
                                  "end": 3187,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 31
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3188,
                                  "end": 3199,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 32
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 43
                                    },
                                    "identifierName": "constraints"
                                  },
                                  "name": "constraints"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3200,
                                "end": 3203,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 47
                                  },
                                  "identifierName": "map"
                                },
                                "name": "map"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "ArrowFunctionExpression",
                                "start": 3204,
                                "end": 3253,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 48
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 97
                                  }
                                },
                                "id": null,
                                "generator": false,
                                "expression": true,
                                "async": false,
                                "params": [
                                  {
                                    "type": "Identifier",
                                    "start": 3204,
                                    "end": 3214,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 48
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 58
                                      },
                                      "identifierName": "geomParams"
                                    },
                                    "name": "geomParams"
                                  }
                                ],
                                "body": {
                                  "type": "CallExpression",
                                  "start": 3218,
                                  "end": 3253,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 62
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 97
                                    }
                                  },
                                  "callee": {
                                    "type": "Identifier",
                                    "start": 3218,
                                    "end": 3228,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 62
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 72
                                      },
                                      "identifierName": "addCommand"
                                    },
                                    "name": "addCommand"
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 3229,
                                      "end": 3240,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 73
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 84
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 3229,
                                        "end": 3233,
                                        "loc": {
                                          "start": {
                                            "line": 75,
                                            "column": 73
                                          },
                                          "end": {
                                            "line": 75,
                                            "column": 77
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3234,
                                        "end": 3240,
                                        "loc": {
                                          "start": {
                                            "line": 75,
                                            "column": 78
                                          },
                                          "end": {
                                            "line": 75,
                                            "column": 84
                                          },
                                          "identifierName": "sketch"
                                        },
                                        "name": "sketch"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "Identifier",
                                      "start": 3242,
                                      "end": 3252,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 86
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 96
                                        },
                                        "identifierName": "geomParams"
                                      },
                                      "name": "geomParams"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3264,
                      "end": 3286,
                      "loc": {
                        "start": {
                          "line": 76,
                          "column": 8
                        },
                        "end": {
                          "line": 76,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 3264,
                        "end": 3285,
                        "loc": {
                          "start": {
                            "line": 76,
                            "column": 8
                          },
                          "end": {
                            "line": 76,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 3264,
                          "end": 3280,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 8
                            },
                            "end": {
                              "line": 76,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 3264,
                            "end": 3268,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 8
                              },
                              "end": {
                                "line": 76,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3269,
                            "end": 3280,
                            "loc": {
                              "start": {
                                "line": 76,
                                "column": 13
                              },
                              "end": {
                                "line": 76,
                                "column": 24
                              },
                              "identifierName": "constraints"
                            },
                            "name": "constraints"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 3283,
                          "end": 3285,
                          "loc": {
                            "start": {
                              "line": 76,
                              "column": 27
                            },
                            "end": {
                              "line": 76,
                              "column": 29
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 3295,
                      "end": 3313,
                      "loc": {
                        "start": {
                          "line": 77,
                          "column": 8
                        },
                        "end": {
                          "line": 77,
                          "column": 26
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 3302,
                        "end": 3312,
                        "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": 3068,
                    "end": 3140,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 4
                      },
                      "end": {
                        "line": 73,
                        "column": 76
                      }
                    }
                  }
                ]
              }
            ]
          },
          "leadingComments": [],
          "trailingComments": []
        }
      },
      {
        "type": "FunctionDeclaration",
        "start": 3323,
        "end": 3976,
        "loc": {
          "start": {
            "line": 81,
            "column": 0
          },
          "end": {
            "line": 91,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 3332,
          "end": 3343,
          "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": 3344,
            "end": 3351,
            "loc": {
              "start": {
                "line": 81,
                "column": 21
              },
              "end": {
                "line": 81,
                "column": 28
              },
              "identifierName": "constr0"
            },
            "name": "constr0"
          },
          {
            "type": "Identifier",
            "start": 3353,
            "end": 3360,
            "loc": {
              "start": {
                "line": 81,
                "column": 30
              },
              "end": {
                "line": 81,
                "column": 37
              },
              "identifierName": "constr1"
            },
            "name": "constr1"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 3362,
          "end": 3976,
          "loc": {
            "start": {
              "line": 81,
              "column": 39
            },
            "end": {
              "line": 91,
              "column": 1
            }
          },
          "body": [
            {
              "type": "IfStatement",
              "start": 3368,
              "end": 3418,
              "loc": {
                "start": {
                  "line": 82,
                  "column": 4
                },
                "end": {
                  "line": 82,
                  "column": 54
                }
              },
              "test": {
                "type": "BinaryExpression",
                "start": 3372,
                "end": 3403,
                "loc": {
                  "start": {
                    "line": 82,
                    "column": 8
                  },
                  "end": {
                    "line": 82,
                    "column": 39
                  }
                },
                "left": {
                  "type": "MemberExpression",
                  "start": 3372,
                  "end": 3385,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 8
                    },
                    "end": {
                      "line": 82,
                      "column": 21
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3372,
                    "end": 3379,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 8
                      },
                      "end": {
                        "line": 82,
                        "column": 15
                      },
                      "identifierName": "constr0"
                    },
                    "name": "constr0"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3380,
                    "end": 3385,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 16
                      },
                      "end": {
                        "line": 82,
                        "column": 21
                      },
                      "identifierName": "class"
                    },
                    "name": "class"
                  },
                  "computed": false
                },
                "operator": "!==",
                "right": {
                  "type": "MemberExpression",
                  "start": 3390,
                  "end": 3403,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 26
                    },
                    "end": {
                      "line": 82,
                      "column": 39
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3390,
                    "end": 3397,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 26
                      },
                      "end": {
                        "line": 82,
                        "column": 33
                      },
                      "identifierName": "constr1"
                    },
                    "name": "constr1"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3398,
                    "end": 3403,
                    "loc": {
                      "start": {
                        "line": 82,
                        "column": 34
                      },
                      "end": {
                        "line": 82,
                        "column": 39
                      },
                      "identifierName": "class"
                    },
                    "name": "class"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3405,
                "end": 3418,
                "loc": {
                  "start": {
                    "line": 82,
                    "column": 41
                  },
                  "end": {
                    "line": 82,
                    "column": 54
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3412,
                  "end": 3417,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 48
                    },
                    "end": {
                      "line": 82,
                      "column": 53
                    }
                  },
                  "value": false
                }
              },
              "alternate": null
            },
            {
              "type": "IfStatement",
              "start": 3423,
              "end": 3493,
              "loc": {
                "start": {
                  "line": 83,
                  "column": 4
                },
                "end": {
                  "line": 83,
                  "column": 74
                }
              },
              "test": {
                "type": "BinaryExpression",
                "start": 3427,
                "end": 3478,
                "loc": {
                  "start": {
                    "line": 83,
                    "column": 8
                  },
                  "end": {
                    "line": 83,
                    "column": 59
                  }
                },
                "left": {
                  "type": "MemberExpression",
                  "start": 3427,
                  "end": 3450,
                  "loc": {
                    "start": {
                      "line": 83,
                      "column": 8
                    },
                    "end": {
                      "line": 83,
                      "column": 31
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3427,
                    "end": 3443,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 8
                      },
                      "end": {
                        "line": 83,
                        "column": 24
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3427,
                      "end": 3434,
                      "loc": {
                        "start": {
                          "line": 83,
                          "column": 8
                        },
                        "end": {
                          "line": 83,
                          "column": 15
                        },
                        "identifierName": "constr0"
                      },
                      "name": "constr0"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3435,
                      "end": 3443,
                      "loc": {
                        "start": {
                          "line": 83,
                          "column": 16
                        },
                        "end": {
                          "line": 83,
                          "column": 24
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3444,
                    "end": 3450,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 25
                      },
                      "end": {
                        "line": 83,
                        "column": 31
                      },
                      "identifierName": "length"
                    },
                    "name": "length"
                  },
                  "computed": false
                },
                "operator": "!==",
                "right": {
                  "type": "MemberExpression",
                  "start": 3455,
                  "end": 3478,
                  "loc": {
                    "start": {
                      "line": 83,
                      "column": 36
                    },
                    "end": {
                      "line": 83,
                      "column": 59
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3455,
                    "end": 3471,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 36
                      },
                      "end": {
                        "line": 83,
                        "column": 52
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3455,
                      "end": 3462,
                      "loc": {
                        "start": {
                          "line": 83,
                          "column": 36
                        },
                        "end": {
                          "line": 83,
                          "column": 43
                        },
                        "identifierName": "constr1"
                      },
                      "name": "constr1"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3463,
                      "end": 3471,
                      "loc": {
                        "start": {
                          "line": 83,
                          "column": 44
                        },
                        "end": {
                          "line": 83,
                          "column": 52
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3472,
                    "end": 3478,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 53
                      },
                      "end": {
                        "line": 83,
                        "column": 59
                      },
                      "identifierName": "length"
                    },
                    "name": "length"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3480,
                "end": 3493,
                "loc": {
                  "start": {
                    "line": 83,
                    "column": 61
                  },
                  "end": {
                    "line": 83,
                    "column": 74
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3487,
                  "end": 3492,
                  "loc": {
                    "start": {
                      "line": 83,
                      "column": 68
                    },
                    "end": {
                      "line": 83,
                      "column": 73
                    }
                  },
                  "value": false
                }
              },
              "alternate": null
            },
            {
              "type": "IfStatement",
              "start": 3498,
              "end": 3623,
              "loc": {
                "start": {
                  "line": 84,
                  "column": 4
                },
                "end": {
                  "line": 85,
                  "column": 21
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 3502,
                "end": 3600,
                "loc": {
                  "start": {
                    "line": 84,
                    "column": 8
                  },
                  "end": {
                    "line": 84,
                    "column": 106
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 3502,
                  "end": 3572,
                  "loc": {
                    "start": {
                      "line": 84,
                      "column": 8
                    },
                    "end": {
                      "line": 84,
                      "column": 78
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 3502,
                    "end": 3544,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 8
                      },
                      "end": {
                        "line": 84,
                        "column": 50
                      }
                    },
                    "left": {
                      "type": "MemberExpression",
                      "start": 3502,
                      "end": 3521,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 8
                        },
                        "end": {
                          "line": 84,
                          "column": 27
                        }
                      },
                      "object": {
                        "type": "MemberExpression",
                        "start": 3502,
                        "end": 3515,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 8
                          },
                          "end": {
                            "line": 84,
                            "column": 21
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3502,
                          "end": 3509,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 8
                            },
                            "end": {
                              "line": 84,
                              "column": 15
                            },
                            "identifierName": "constr0"
                          },
                          "name": "constr0"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3510,
                          "end": 3515,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 16
                            },
                            "end": {
                              "line": 84,
                              "column": 21
                            },
                            "identifierName": "value"
                          },
                          "name": "value"
                        },
                        "computed": false
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3516,
                        "end": 3521,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 22
                          },
                          "end": {
                            "line": 84,
                            "column": 27
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    },
                    "operator": "||",
                    "right": {
                      "type": "MemberExpression",
                      "start": 3525,
                      "end": 3544,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 31
                        },
                        "end": {
                          "line": 84,
                          "column": 50
                        }
                      },
                      "object": {
                        "type": "MemberExpression",
                        "start": 3525,
                        "end": 3538,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 31
                          },
                          "end": {
                            "line": 84,
                            "column": 44
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3525,
                          "end": 3532,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 31
                            },
                            "end": {
                              "line": 84,
                              "column": 38
                            },
                            "identifierName": "constr1"
                          },
                          "name": "constr1"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3533,
                          "end": 3538,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 39
                            },
                            "end": {
                              "line": 84,
                              "column": 44
                            },
                            "identifierName": "value"
                          },
                          "name": "value"
                        },
                        "computed": false
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3539,
                        "end": 3544,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 45
                          },
                          "end": {
                            "line": 84,
                            "column": 50
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    }
                  },
                  "operator": "||",
                  "right": {
                    "type": "MemberExpression",
                    "start": 3548,
                    "end": 3572,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 54
                      },
                      "end": {
                        "line": 84,
                        "column": 78
                      }
                    },
                    "object": {
                      "type": "MemberExpression",
                      "start": 3548,
                      "end": 3561,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 54
                        },
                        "end": {
                          "line": 84,
                          "column": 67
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3548,
                        "end": 3555,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 54
                          },
                          "end": {
                            "line": 84,
                            "column": 61
                          },
                          "identifierName": "constr0"
                        },
                        "name": "constr0"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3556,
                        "end": 3561,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 62
                          },
                          "end": {
                            "line": 84,
                            "column": 67
                          },
                          "identifierName": "value"
                        },
                        "name": "value"
                      },
                      "computed": false
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3562,
                      "end": 3572,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 68
                        },
                        "end": {
                          "line": 84,
                          "column": 78
                        },
                        "identifierName": "expression"
                      },
                      "name": "expression"
                    },
                    "computed": false
                  }
                },
                "operator": "||",
                "right": {
                  "type": "MemberExpression",
                  "start": 3576,
                  "end": 3600,
                  "loc": {
                    "start": {
                      "line": 84,
                      "column": 82
                    },
                    "end": {
                      "line": 84,
                      "column": 106
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3576,
                    "end": 3589,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 82
                      },
                      "end": {
                        "line": 84,
                        "column": 95
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3576,
                      "end": 3583,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 82
                        },
                        "end": {
                          "line": 84,
                          "column": 89
                        },
                        "identifierName": "constr1"
                      },
                      "name": "constr1"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3584,
                      "end": 3589,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 90
                        },
                        "end": {
                          "line": 84,
                          "column": 95
                        },
                        "identifierName": "value"
                      },
                      "name": "value"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3590,
                    "end": 3600,
                    "loc": {
                      "start": {
                        "line": 84,
                        "column": 96
                      },
                      "end": {
                        "line": 84,
                        "column": 106
                      },
                      "identifierName": "expression"
                    },
                    "name": "expression"
                  },
                  "computed": false
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3610,
                "end": 3623,
                "loc": {
                  "start": {
                    "line": 85,
                    "column": 8
                  },
                  "end": {
                    "line": 85,
                    "column": 21
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3617,
                  "end": 3622,
                  "loc": {
                    "start": {
                      "line": 85,
                      "column": 15
                    },
                    "end": {
                      "line": 85,
                      "column": 20
                    }
                  },
                  "value": false
                },
                "trailingComments": null
              },
              "alternate": null,
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " ignore parametric constraints",
                  "start": 3624,
                  "end": 3656,
                  "loc": {
                    "start": {
                      "line": 85,
                      "column": 22
                    },
                    "end": {
                      "line": 85,
                      "column": 54
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 3661,
              "end": 3752,
              "loc": {
                "start": {
                  "line": 86,
                  "column": 4
                },
                "end": {
                  "line": 86,
                  "column": 95
                }
              },
              "test": {
                "type": "CallExpression",
                "start": 3665,
                "end": 3738,
                "loc": {
                  "start": {
                    "line": 86,
                    "column": 8
                  },
                  "end": {
                    "line": 86,
                    "column": 81
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 3665,
                  "end": 3687,
                  "loc": {
                    "start": {
                      "line": 86,
                      "column": 8
                    },
                    "end": {
                      "line": 86,
                      "column": 30
                    }
                  },
                  "object": {
                    "type": "MemberExpression",
                    "start": 3665,
                    "end": 3681,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 8
                      },
                      "end": {
                        "line": 86,
                        "column": 24
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3665,
                      "end": 3672,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 8
                        },
                        "end": {
                          "line": 86,
                          "column": 15
                        },
                        "identifierName": "constr0"
                      },
                      "name": "constr0",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3673,
                      "end": 3681,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 16
                        },
                        "end": {
                          "line": 86,
                          "column": 24
                        },
                        "identifierName": "entities"
                      },
                      "name": "entities"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3682,
                    "end": 3687,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 25
                      },
                      "end": {
                        "line": 86,
                        "column": 30
                      },
                      "identifierName": "every"
                    },
                    "name": "every"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "ArrowFunctionExpression",
                    "start": 3688,
                    "end": 3737,
                    "loc": {
                      "start": {
                        "line": 86,
                        "column": 31
                      },
                      "end": {
                        "line": 86,
                        "column": 80
                      }
                    },
                    "id": null,
                    "generator": false,
                    "expression": true,
                    "async": false,
                    "params": [
                      {
                        "type": "Identifier",
                        "start": 3689,
                        "end": 3692,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 32
                          },
                          "end": {
                            "line": 86,
                            "column": 35
                          },
                          "identifierName": "obj"
                        },
                        "name": "obj"
                      },
                      {
                        "type": "Identifier",
                        "start": 3694,
                        "end": 3697,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 37
                          },
                          "end": {
                            "line": 86,
                            "column": 40
                          },
                          "identifierName": "idx"
                        },
                        "name": "idx"
                      }
                    ],
                    "body": {
                      "type": "BinaryExpression",
                      "start": 3702,
                      "end": 3737,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 45
                        },
                        "end": {
                          "line": 86,
                          "column": 80
                        }
                      },
                      "left": {
                        "type": "MemberExpression",
                        "start": 3702,
                        "end": 3708,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 45
                          },
                          "end": {
                            "line": 86,
                            "column": 51
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3702,
                          "end": 3705,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 45
                            },
                            "end": {
                              "line": 86,
                              "column": 48
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3706,
                          "end": 3708,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 49
                            },
                            "end": {
                              "line": 86,
                              "column": 51
                            },
                            "identifierName": "id"
                          },
                          "name": "id"
                        },
                        "computed": false
                      },
                      "operator": "===",
                      "right": {
                        "type": "MemberExpression",
                        "start": 3713,
                        "end": 3737,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 56
                          },
                          "end": {
                            "line": 86,
                            "column": 80
                          }
                        },
                        "object": {
                          "type": "MemberExpression",
                          "start": 3713,
                          "end": 3734,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 56
                            },
                            "end": {
                              "line": 86,
                              "column": 77
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3713,
                            "end": 3729,
                            "loc": {
                              "start": {
                                "line": 86,
                                "column": 56
                              },
                              "end": {
                                "line": 86,
                                "column": 72
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 3713,
                              "end": 3720,
                              "loc": {
                                "start": {
                                  "line": 86,
                                  "column": 56
                                },
                                "end": {
                                  "line": 86,
                                  "column": 63
                                },
                                "identifierName": "constr1"
                              },
                              "name": "constr1"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3721,
                              "end": 3729,
                              "loc": {
                                "start": {
                                  "line": 86,
                                  "column": 64
                                },
                                "end": {
                                  "line": 86,
                                  "column": 72
                                },
                                "identifierName": "entities"
                              },
                              "name": "entities"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3730,
                            "end": 3733,
                            "loc": {
                              "start": {
                                "line": 86,
                                "column": 73
                              },
                              "end": {
                                "line": 86,
                                "column": 76
                              },
                              "identifierName": "idx"
                            },
                            "name": "idx"
                          },
                          "computed": true
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3735,
                          "end": 3737,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 78
                            },
                            "end": {
                              "line": 86,
                              "column": 80
                            },
                            "identifierName": "id"
                          },
                          "name": "id"
                        },
                        "computed": false
                      }
                    }
                  }
                ],
                "leadingComments": null
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3740,
                "end": 3752,
                "loc": {
                  "start": {
                    "line": 86,
                    "column": 83
                  },
                  "end": {
                    "line": 86,
                    "column": 95
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3747,
                  "end": 3751,
                  "loc": {
                    "start": {
                      "line": 86,
                      "column": 90
                    },
                    "end": {
                      "line": 86,
                      "column": 94
                    }
                  },
                  "value": true
                }
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " ignore parametric constraints",
                  "start": 3624,
                  "end": 3656,
                  "loc": {
                    "start": {
                      "line": 85,
                      "column": 22
                    },
                    "end": {
                      "line": 85,
                      "column": 54
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3757,
              "end": 3825,
              "loc": {
                "start": {
                  "line": 87,
                  "column": 4
                },
                "end": {
                  "line": 87,
                  "column": 72
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3763,
                  "end": 3824,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 10
                    },
                    "end": {
                      "line": 87,
                      "column": 71
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3763,
                    "end": 3782,
                    "loc": {
                      "start": {
                        "line": 87,
                        "column": 10
                      },
                      "end": {
                        "line": 87,
                        "column": 29
                      },
                      "identifierName": "isBinaryCommutative"
                    },
                    "name": "isBinaryCommutative"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 3785,
                    "end": 3824,
                    "loc": {
                      "start": {
                        "line": 87,
                        "column": 32
                      },
                      "end": {
                        "line": 87,
                        "column": 71
                      }
                    },
                    "object": {
                      "type": "CallExpression",
                      "start": 3785,
                      "end": 3810,
                      "loc": {
                        "start": {
                          "line": 87,
                          "column": 32
                        },
                        "end": {
                          "line": 87,
                          "column": 57
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 3785,
                        "end": 3795,
                        "loc": {
                          "start": {
                            "line": 87,
                            "column": 32
                          },
                          "end": {
                            "line": 87,
                            "column": 42
                          },
                          "identifierName": "Constraint"
                        },
                        "name": "Constraint"
                      },
                      "arguments": [
                        {
                          "type": "MemberExpression",
                          "start": 3796,
                          "end": 3809,
                          "loc": {
                            "start": {
                              "line": 87,
                              "column": 43
                            },
                            "end": {
                              "line": 87,
                              "column": 56
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3796,
                            "end": 3803,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 43
                              },
                              "end": {
                                "line": 87,
                                "column": 50
                              },
                              "identifierName": "constr0"
                            },
                            "name": "constr0"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3804,
                            "end": 3809,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 51
                              },
                              "end": {
                                "line": 87,
                                "column": 56
                              },
                              "identifierName": "class"
                            },
                            "name": "class"
                          },
                          "computed": false
                        }
                      ]
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3811,
                      "end": 3824,
                      "loc": {
                        "start": {
                          "line": 87,
                          "column": 58
                        },
                        "end": {
                          "line": 87,
                          "column": 71
                        },
                        "identifierName": "isCommutative"
                      },
                      "name": "isCommutative"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "const"
            },
            {
              "type": "IfStatement",
              "start": 3830,
              "end": 3956,
              "loc": {
                "start": {
                  "line": 88,
                  "column": 4
                },
                "end": {
                  "line": 89,
                  "column": 20
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 3834,
                "end": 3934,
                "loc": {
                  "start": {
                    "line": 88,
                    "column": 8
                  },
                  "end": {
                    "line": 88,
                    "column": 108
                  }
                },
                "left": {
                  "type": "Identifier",
                  "start": 3834,
                  "end": 3853,
                  "loc": {
                    "start": {
                      "line": 88,
                      "column": 8
                    },
                    "end": {
                      "line": 88,
                      "column": 27
                    },
                    "identifierName": "isBinaryCommutative"
                  },
                  "name": "isBinaryCommutative"
                },
                "operator": "&&",
                "right": {
                  "type": "CallExpression",
                  "start": 3857,
                  "end": 3934,
                  "loc": {
                    "start": {
                      "line": 88,
                      "column": 31
                    },
                    "end": {
                      "line": 88,
                      "column": 108
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 3857,
                    "end": 3879,
                    "loc": {
                      "start": {
                        "line": 88,
                        "column": 31
                      },
                      "end": {
                        "line": 88,
                        "column": 53
                      }
                    },
                    "object": {
                      "type": "MemberExpression",
                      "start": 3857,
                      "end": 3873,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 31
                        },
                        "end": {
                          "line": 88,
                          "column": 47
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3857,
                        "end": 3864,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 31
                          },
                          "end": {
                            "line": 88,
                            "column": 38
                          },
                          "identifierName": "constr0"
                        },
                        "name": "constr0"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3865,
                        "end": 3873,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 39
                          },
                          "end": {
                            "line": 88,
                            "column": 47
                          },
                          "identifierName": "entities"
                        },
                        "name": "entities"
                      },
                      "computed": false
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3874,
                      "end": 3879,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 48
                        },
                        "end": {
                          "line": 88,
                          "column": 53
                        },
                        "identifierName": "every"
                      },
                      "name": "every"
                    },
                    "computed": false
                  },
                  "arguments": [
                    {
                      "type": "ArrowFunctionExpression",
                      "start": 3880,
                      "end": 3933,
                      "loc": {
                        "start": {
                          "line": 88,
                          "column": 54
                        },
                        "end": {
                          "line": 88,
                          "column": 107
                        }
                      },
                      "id": null,
                      "generator": false,
                      "expression": true,
                      "async": false,
                      "params": [
                        {
                          "type": "Identifier",
                          "start": 3881,
                          "end": 3884,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 55
                            },
                            "end": {
                              "line": 88,
                              "column": 58
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        },
                        {
                          "type": "Identifier",
                          "start": 3886,
                          "end": 3889,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 60
                            },
                            "end": {
                              "line": 88,
                              "column": 63
                            },
                            "identifierName": "idx"
                          },
                          "name": "idx"
                        }
                      ],
                      "body": {
                        "type": "BinaryExpression",
                        "start": 3894,
                        "end": 3933,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 68
                          },
                          "end": {
                            "line": 88,
                            "column": 107
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 3894,
                          "end": 3900,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 68
                            },
                            "end": {
                              "line": 88,
                              "column": 74
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3894,
                            "end": 3897,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 68
                              },
                              "end": {
                                "line": 88,
                                "column": 71
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3898,
                            "end": 3900,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 72
                              },
                              "end": {
                                "line": 88,
                                "column": 74
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "computed": false
                        },
                        "operator": "===",
                        "right": {
                          "type": "MemberExpression",
                          "start": 3905,
                          "end": 3933,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 79
                            },
                            "end": {
                              "line": 88,
                              "column": 107
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 3905,
                            "end": 3930,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 79
                              },
                              "end": {
                                "line": 88,
                                "column": 104
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3905,
                              "end": 3921,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 79
                                },
                                "end": {
                                  "line": 88,
                                  "column": 95
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 3905,
                                "end": 3912,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 79
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 86
                                  },
                                  "identifierName": "constr1"
                                },
                                "name": "constr1"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3913,
                                "end": 3921,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 87
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 95
                                  },
                                  "identifierName": "entities"
                                },
                                "name": "entities"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "BinaryExpression",
                              "start": 3922,
                              "end": 3929,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 96
                                },
                                "end": {
                                  "line": 88,
                                  "column": 103
                                }
                              },
                              "left": {
                                "type": "NumericLiteral",
                                "start": 3922,
                                "end": 3923,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 96
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 97
                                  }
                                },
                                "extra": {
                                  "rawValue": 1,
                                  "raw": "1"
                                },
                                "value": 1
                              },
                              "operator": "-",
                              "right": {
                                "type": "Identifier",
                                "start": 3926,
                                "end": 3929,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 100
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 103
                                  },
                                  "identifierName": "idx"
                                },
                                "name": "idx"
                              }
                            },
                            "computed": true
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3931,
                            "end": 3933,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 105
                              },
                              "end": {
                                "line": 88,
                                "column": 107
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "computed": false
                        }
                      }
                    }
                  ]
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3944,
                "end": 3956,
                "loc": {
                  "start": {
                    "line": 89,
                    "column": 8
                  },
                  "end": {
                    "line": 89,
                    "column": 20
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3951,
                  "end": 3955,
                  "loc": {
                    "start": {
                      "line": 89,
                      "column": 15
                    },
                    "end": {
                      "line": 89,
                      "column": 19
                    }
                  },
                  "value": true
                }
              },
              "alternate": null
            },
            {
              "type": "ReturnStatement",
              "start": 3961,
              "end": 3974,
              "loc": {
                "start": {
                  "line": 90,
                  "column": 4
                },
                "end": {
                  "line": 90,
                  "column": 17
                }
              },
              "argument": {
                "type": "BooleanLiteral",
                "start": 3968,
                "end": 3973,
                "loc": {
                  "start": {
                    "line": 90,
                    "column": 11
                  },
                  "end": {
                    "line": 90,
                    "column": 16
                  }
                },
                "value": false
              }
            }
          ],
          "directives": [],
          "trailingComments": null
        },
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " Disjoint Set Union",
            "start": 3978,
            "end": 3999,
            "loc": {
              "start": {
                "line": 93,
                "column": 0
              },
              "end": {
                "line": 93,
                "column": 21
              }
            }
          }
        ]
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 4000,
        "end": 4847,
        "loc": {
          "start": {
            "line": 94,
            "column": 0
          },
          "end": {
            "line": 130,
            "column": 1
          }
        },
        "specifiers": [],
        "source": null,
        "declaration": {
          "type": "ClassDeclaration",
          "start": 4007,
          "end": 4847,
          "loc": {
            "start": {
              "line": 94,
              "column": 7
            },
            "end": {
              "line": 130,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 4013,
            "end": 4016,
            "loc": {
              "start": {
                "line": 94,
                "column": 13
              },
              "end": {
                "line": 94,
                "column": 16
              },
              "identifierName": "DSU"
            },
            "name": "DSU",
            "leadingComments": null
          },
          "superClass": null,
          "body": {
            "type": "ClassBody",
            "start": 4017,
            "end": 4847,
            "loc": {
              "start": {
                "line": 94,
                "column": 17
              },
              "end": {
                "line": 130,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassMethod",
                "start": 4023,
                "end": 4078,
                "loc": {
                  "start": {
                    "line": 95,
                    "column": 4
                  },
                  "end": {
                    "line": 97,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4023,
                  "end": 4034,
                  "loc": {
                    "start": {
                      "line": 95,
                      "column": 4
                    },
                    "end": {
                      "line": 95,
                      "column": 15
                    },
                    "identifierName": "constructor"
                  },
                  "name": "constructor"
                },
                "static": false,
                "kind": "constructor",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 4037,
                  "end": 4078,
                  "loc": {
                    "start": {
                      "line": 95,
                      "column": 18
                    },
                    "end": {
                      "line": 97,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4047,
                      "end": 4072,
                      "loc": {
                        "start": {
                          "line": 96,
                          "column": 8
                        },
                        "end": {
                          "line": 96,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4047,
                        "end": 4071,
                        "loc": {
                          "start": {
                            "line": 96,
                            "column": 8
                          },
                          "end": {
                            "line": 96,
                            "column": 32
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 4047,
                          "end": 4059,
                          "loc": {
                            "start": {
                              "line": 96,
                              "column": 8
                            },
                            "end": {
                              "line": 96,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4047,
                            "end": 4051,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 8
                              },
                              "end": {
                                "line": 96,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4052,
                            "end": 4059,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 13
                              },
                              "end": {
                                "line": 96,
                                "column": 20
                              },
                              "identifierName": "parents"
                            },
                            "name": "parents"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 4062,
                          "end": 4071,
                          "loc": {
                            "start": {
                              "line": 96,
                              "column": 23
                            },
                            "end": {
                              "line": 96,
                              "column": 32
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 4066,
                            "end": 4069,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 27
                              },
                              "end": {
                                "line": 96,
                                "column": 30
                              },
                              "identifierName": "Map"
                            },
                            "name": "Map"
                          },
                          "arguments": []
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4084,
                "end": 4174,
                "loc": {
                  "start": {
                    "line": 99,
                    "column": 4
                  },
                  "end": {
                    "line": 101,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4084,
                  "end": 4093,
                  "loc": {
                    "start": {
                      "line": 99,
                      "column": 4
                    },
                    "end": {
                      "line": 99,
                      "column": 13
                    },
                    "identifierName": "getParent"
                  },
                  "name": "getParent"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4094,
                    "end": 4097,
                    "loc": {
                      "start": {
                        "line": 99,
                        "column": 14
                      },
                      "end": {
                        "line": 99,
                        "column": 17
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4099,
                  "end": 4174,
                  "loc": {
                    "start": {
                      "line": 99,
                      "column": 19
                    },
                    "end": {
                      "line": 101,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 4109,
                      "end": 4168,
                      "loc": {
                        "start": {
                          "line": 100,
                          "column": 8
                        },
                        "end": {
                          "line": 100,
                          "column": 67
                        }
                      },
                      "argument": {
                        "type": "ConditionalExpression",
                        "start": 4116,
                        "end": 4167,
                        "loc": {
                          "start": {
                            "line": 100,
                            "column": 15
                          },
                          "end": {
                            "line": 100,
                            "column": 66
                          }
                        },
                        "test": {
                          "type": "CallExpression",
                          "start": 4116,
                          "end": 4137,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 15
                            },
                            "end": {
                              "line": 100,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4116,
                            "end": 4132,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 15
                              },
                              "end": {
                                "line": 100,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4116,
                              "end": 4128,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 15
                                },
                                "end": {
                                  "line": 100,
                                  "column": 27
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4116,
                                "end": 4120,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 19
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4121,
                                "end": 4128,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 27
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4129,
                              "end": 4132,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 28
                                },
                                "end": {
                                  "line": 100,
                                  "column": 31
                                },
                                "identifierName": "has"
                              },
                              "name": "has"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4133,
                              "end": 4136,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 32
                                },
                                "end": {
                                  "line": 100,
                                  "column": 35
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "consequent": {
                          "type": "CallExpression",
                          "start": 4140,
                          "end": 4161,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 39
                            },
                            "end": {
                              "line": 100,
                              "column": 60
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4140,
                            "end": 4156,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 39
                              },
                              "end": {
                                "line": 100,
                                "column": 55
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4140,
                              "end": 4152,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 39
                                },
                                "end": {
                                  "line": 100,
                                  "column": 51
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4140,
                                "end": 4144,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 43
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4145,
                                "end": 4152,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 51
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4153,
                              "end": 4156,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 52
                                },
                                "end": {
                                  "line": 100,
                                  "column": 55
                                },
                                "identifierName": "get"
                              },
                              "name": "get"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4157,
                              "end": 4160,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 56
                                },
                                "end": {
                                  "line": 100,
                                  "column": 59
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "alternate": {
                          "type": "Identifier",
                          "start": 4164,
                          "end": 4167,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 63
                            },
                            "end": {
                              "line": 100,
                              "column": 66
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4180,
                "end": 4243,
                "loc": {
                  "start": {
                    "line": 103,
                    "column": 4
                  },
                  "end": {
                    "line": 105,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4180,
                  "end": 4189,
                  "loc": {
                    "start": {
                      "line": 103,
                      "column": 4
                    },
                    "end": {
                      "line": 103,
                      "column": 13
                    },
                    "identifierName": "setParent"
                  },
                  "name": "setParent"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4190,
                    "end": 4193,
                    "loc": {
                      "start": {
                        "line": 103,
                        "column": 14
                      },
                      "end": {
                        "line": 103,
                        "column": 17
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  },
                  {
                    "type": "Identifier",
                    "start": 4195,
                    "end": 4198,
                    "loc": {
                      "start": {
                        "line": 103,
                        "column": 19
                      },
                      "end": {
                        "line": 103,
                        "column": 22
                      },
                      "identifierName": "par"
                    },
                    "name": "par"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4200,
                  "end": 4243,
                  "loc": {
                    "start": {
                      "line": 103,
                      "column": 24
                    },
                    "end": {
                      "line": 105,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4210,
                      "end": 4237,
                      "loc": {
                        "start": {
                          "line": 104,
                          "column": 8
                        },
                        "end": {
                          "line": 104,
                          "column": 35
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4210,
                        "end": 4236,
                        "loc": {
                          "start": {
                            "line": 104,
                            "column": 8
                          },
                          "end": {
                            "line": 104,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4210,
                          "end": 4226,
                          "loc": {
                            "start": {
                              "line": 104,
                              "column": 8
                            },
                            "end": {
                              "line": 104,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 4210,
                            "end": 4222,
                            "loc": {
                              "start": {
                                "line": 104,
                                "column": 8
                              },
                              "end": {
                                "line": 104,
                                "column": 20
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4210,
                              "end": 4214,
                              "loc": {
                                "start": {
                                  "line": 104,
                                  "column": 8
                                },
                                "end": {
                                  "line": 104,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4215,
                              "end": 4222,
                              "loc": {
                                "start": {
                                  "line": 104,
                                  "column": 13
                                },
                                "end": {
                                  "line": 104,
                                  "column": 20
                                },
                                "identifierName": "parents"
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4223,
                            "end": 4226,
                            "loc": {
                              "start": {
                                "line": 104,
                                "column": 21
                              },
                              "end": {
                                "line": 104,
                                "column": 24
                              },
                              "identifierName": "set"
                            },
                            "name": "set"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4227,
                            "end": 4230,
                            "loc": {
                              "start": {
                                "line": 104,
                                "column": 25
                              },
                              "end": {
                                "line": 104,
                                "column": 28
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 4232,
                            "end": 4235,
                            "loc": {
                              "start": {
                                "line": 104,
                                "column": 30
                              },
                              "end": {
                                "line": 104,
                                "column": 33
                              },
                              "identifierName": "par"
                            },
                            "name": "par"
                          }
                        ]
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4249,
                "end": 4331,
                "loc": {
                  "start": {
                    "line": 107,
                    "column": 4
                  },
                  "end": {
                    "line": 109,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4249,
                  "end": 4254,
                  "loc": {
                    "start": {
                      "line": 107,
                      "column": 4
                    },
                    "end": {
                      "line": 107,
                      "column": 9
                    },
                    "identifierName": "touch"
                  },
                  "name": "touch"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4255,
                    "end": 4258,
                    "loc": {
                      "start": {
                        "line": 107,
                        "column": 10
                      },
                      "end": {
                        "line": 107,
                        "column": 13
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4260,
                  "end": 4331,
                  "loc": {
                    "start": {
                      "line": 107,
                      "column": 15
                    },
                    "end": {
                      "line": 109,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 4270,
                      "end": 4325,
                      "loc": {
                        "start": {
                          "line": 108,
                          "column": 8
                        },
                        "end": {
                          "line": 108,
                          "column": 63
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 4274,
                        "end": 4296,
                        "loc": {
                          "start": {
                            "line": 108,
                            "column": 12
                          },
                          "end": {
                            "line": 108,
                            "column": 34
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "CallExpression",
                          "start": 4275,
                          "end": 4296,
                          "loc": {
                            "start": {
                              "line": 108,
                              "column": 13
                            },
                            "end": {
                              "line": 108,
                              "column": 34
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4275,
                            "end": 4291,
                            "loc": {
                              "start": {
                                "line": 108,
                                "column": 13
                              },
                              "end": {
                                "line": 108,
                                "column": 29
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4275,
                              "end": 4287,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 13
                                },
                                "end": {
                                  "line": 108,
                                  "column": 25
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4275,
                                "end": 4279,
                                "loc": {
                                  "start": {
                                    "line": 108,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 108,
                                    "column": 17
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4280,
                                "end": 4287,
                                "loc": {
                                  "start": {
                                    "line": 108,
                                    "column": 18
                                  },
                                  "end": {
                                    "line": 108,
                                    "column": 25
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4288,
                              "end": 4291,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 26
                                },
                                "end": {
                                  "line": 108,
                                  "column": 29
                                },
                                "identifierName": "has"
                              },
                              "name": "has"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4292,
                              "end": 4295,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 30
                                },
                                "end": {
                                  "line": 108,
                                  "column": 33
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 4298,
                        "end": 4325,
                        "loc": {
                          "start": {
                            "line": 108,
                            "column": 36
                          },
                          "end": {
                            "line": 108,
                            "column": 63
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 4298,
                          "end": 4324,
                          "loc": {
                            "start": {
                              "line": 108,
                              "column": 36
                            },
                            "end": {
                              "line": 108,
                              "column": 62
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4298,
                            "end": 4314,
                            "loc": {
                              "start": {
                                "line": 108,
                                "column": 36
                              },
                              "end": {
                                "line": 108,
                                "column": 52
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4298,
                              "end": 4310,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 36
                                },
                                "end": {
                                  "line": 108,
                                  "column": 48
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4298,
                                "end": 4302,
                                "loc": {
                                  "start": {
                                    "line": 108,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 108,
                                    "column": 40
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4303,
                                "end": 4310,
                                "loc": {
                                  "start": {
                                    "line": 108,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 108,
                                    "column": 48
                                  },
                                  "identifierName": "parents"
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4311,
                              "end": 4314,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 49
                                },
                                "end": {
                                  "line": 108,
                                  "column": 52
                                },
                                "identifierName": "set"
                              },
                              "name": "set"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4315,
                              "end": 4318,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 53
                                },
                                "end": {
                                  "line": 108,
                                  "column": 56
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            },
                            {
                              "type": "Identifier",
                              "start": 4320,
                              "end": 4323,
                              "loc": {
                                "start": {
                                  "line": 108,
                                  "column": 58
                                },
                                "end": {
                                  "line": 108,
                                  "column": 61
                                },
                                "identifierName": "obj"
                              },
                              "name": "obj"
                            }
                          ]
                        }
                      },
                      "alternate": null
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4337,
                "end": 4531,
                "loc": {
                  "start": {
                    "line": 111,
                    "column": 4
                  },
                  "end": {
                    "line": 117,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4337,
                  "end": 4344,
                  "loc": {
                    "start": {
                      "line": 111,
                      "column": 4
                    },
                    "end": {
                      "line": 111,
                      "column": 11
                    },
                    "identifierName": "getHead"
                  },
                  "name": "getHead"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4345,
                    "end": 4348,
                    "loc": {
                      "start": {
                        "line": 111,
                        "column": 12
                      },
                      "end": {
                        "line": 111,
                        "column": 15
                      },
                      "identifierName": "obj"
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4350,
                  "end": 4531,
                  "loc": {
                    "start": {
                      "line": 111,
                      "column": 17
                    },
                    "end": {
                      "line": 117,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 4360,
                      "end": 4392,
                      "loc": {
                        "start": {
                          "line": 112,
                          "column": 8
                        },
                        "end": {
                          "line": 112,
                          "column": 40
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 4366,
                          "end": 4391,
                          "loc": {
                            "start": {
                              "line": 112,
                              "column": 14
                            },
                            "end": {
                              "line": 112,
                              "column": 39
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 4366,
                            "end": 4369,
                            "loc": {
                              "start": {
                                "line": 112,
                                "column": 14
                              },
                              "end": {
                                "line": 112,
                                "column": 17
                              },
                              "identifierName": "par"
                            },
                            "name": "par"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 4372,
                            "end": 4391,
                            "loc": {
                              "start": {
                                "line": 112,
                                "column": 20
                              },
                              "end": {
                                "line": 112,
                                "column": 39
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4372,
                              "end": 4386,
                              "loc": {
                                "start": {
                                  "line": 112,
                                  "column": 20
                                },
                                "end": {
                                  "line": 112,
                                  "column": 34
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4372,
                                "end": 4376,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 112,
                                    "column": 24
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4377,
                                "end": 4386,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 112,
                                    "column": 34
                                  },
                                  "identifierName": "getParent"
                                },
                                "name": "getParent"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 4387,
                                "end": 4390,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 112,
                                    "column": 38
                                  },
                                  "identifierName": "obj"
                                },
                                "name": "obj"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "IfStatement",
                      "start": 4401,
                      "end": 4429,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 8
                        },
                        "end": {
                          "line": 113,
                          "column": 36
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 4405,
                        "end": 4416,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 12
                          },
                          "end": {
                            "line": 113,
                            "column": 23
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 4405,
                          "end": 4408,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 12
                            },
                            "end": {
                              "line": 113,
                              "column": 15
                            },
                            "identifierName": "par"
                          },
                          "name": "par"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 4413,
                          "end": 4416,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 20
                            },
                            "end": {
                              "line": 113,
                              "column": 23
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 4418,
                        "end": 4429,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 25
                          },
                          "end": {
                            "line": 113,
                            "column": 36
                          }
                        },
                        "argument": {
                          "type": "Identifier",
                          "start": 4425,
                          "end": 4428,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 32
                            },
                            "end": {
                              "line": 113,
                              "column": 35
                            },
                            "identifierName": "obj"
                          },
                          "name": "obj"
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 4438,
                      "end": 4469,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 8
                        },
                        "end": {
                          "line": 114,
                          "column": 39
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 4444,
                          "end": 4468,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 14
                            },
                            "end": {
                              "line": 114,
                              "column": 38
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 4444,
                            "end": 4448,
                            "loc": {
                              "start": {
                                "line": 114,
                                "column": 14
                              },
                              "end": {
                                "line": 114,
                                "column": 18
                              },
                              "identifierName": "head"
                            },
                            "name": "head"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 4451,
                            "end": 4468,
                            "loc": {
                              "start": {
                                "line": 114,
                                "column": 21
                              },
                              "end": {
                                "line": 114,
                                "column": 38
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4451,
                              "end": 4463,
                              "loc": {
                                "start": {
                                  "line": 114,
                                  "column": 21
                                },
                                "end": {
                                  "line": 114,
                                  "column": 33
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4451,
                                "end": 4455,
                                "loc": {
                                  "start": {
                                    "line": 114,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 114,
                                    "column": 25
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4456,
                                "end": 4463,
                                "loc": {
                                  "start": {
                                    "line": 114,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 114,
                                    "column": 33
                                  },
                                  "identifierName": "getHead"
                                },
                                "name": "getHead"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 4464,
                                "end": 4467,
                                "loc": {
                                  "start": {
                                    "line": 114,
                                    "column": 34
                                  },
                                  "end": {
                                    "line": 114,
                                    "column": 37
                                  },
                                  "identifierName": "par"
                                },
                                "name": "par"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "const"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4478,
                      "end": 4504,
                      "loc": {
                        "start": {
                          "line": 115,
                          "column": 8
                        },
                        "end": {
                          "line": 115,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4478,
                        "end": 4503,
                        "loc": {
                          "start": {
                            "line": 115,
                            "column": 8
                          },
                          "end": {
                            "line": 115,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4478,
                          "end": 4492,
                          "loc": {
                            "start": {
                              "line": 115,
                              "column": 8
                            },
                            "end": {
                              "line": 115,
                              "column": 22
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4478,
                            "end": 4482,
                            "loc": {
                              "start": {
                                "line": 115,
                                "column": 8
                              },
                              "end": {
                                "line": 115,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4483,
                            "end": 4492,
                            "loc": {
                              "start": {
                                "line": 115,
                                "column": 13
                              },
                              "end": {
                                "line": 115,
                                "column": 22
                              },
                              "identifierName": "setParent"
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4493,
                            "end": 4496,
                            "loc": {
                              "start": {
                                "line": 115,
                                "column": 23
                              },
                              "end": {
                                "line": 115,
                                "column": 26
                              },
                              "identifierName": "obj"
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 4498,
                            "end": 4502,
                            "loc": {
                              "start": {
                                "line": 115,
                                "column": 28
                              },
                              "end": {
                                "line": 115,
                                "column": 32
                              },
                              "identifierName": "head"
                            },
                            "name": "head"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 4513,
                      "end": 4525,
                      "loc": {
                        "start": {
                          "line": 116,
                          "column": 8
                        },
                        "end": {
                          "line": 116,
                          "column": 20
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 4520,
                        "end": 4524,
                        "loc": {
                          "start": {
                            "line": 116,
                            "column": 15
                          },
                          "end": {
                            "line": 116,
                            "column": 19
                          },
                          "identifierName": "head"
                        },
                        "name": "head"
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4537,
                "end": 4771,
                "loc": {
                  "start": {
                    "line": 119,
                    "column": 4
                  },
                  "end": {
                    "line": 125,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4537,
                  "end": 4542,
                  "loc": {
                    "start": {
                      "line": 119,
                      "column": 4
                    },
                    "end": {
                      "line": 119,
                      "column": 9
                    },
                    "identifierName": "merge"
                  },
                  "name": "merge"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4543,
                    "end": 4547,
                    "loc": {
                      "start": {
                        "line": 119,
                        "column": 10
                      },
                      "end": {
                        "line": 119,
                        "column": 14
                      },
                      "identifierName": "objA"
                    },
                    "name": "objA"
                  },
                  {
                    "type": "Identifier",
                    "start": 4549,
                    "end": 4553,
                    "loc": {
                      "start": {
                        "line": 119,
                        "column": 16
                      },
                      "end": {
                        "line": 119,
                        "column": 20
                      },
                      "identifierName": "objB"
                    },
                    "name": "objB"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 4555,
                  "end": 4771,
                  "loc": {
                    "start": {
                      "line": 119,
                      "column": 22
                    },
                    "end": {
                      "line": 125,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 4565,
                      "end": 4582,
                      "loc": {
                        "start": {
                          "line": 120,
                          "column": 8
                        },
                        "end": {
                          "line": 120,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4565,
                        "end": 4581,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 8
                          },
                          "end": {
                            "line": 120,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4565,
                          "end": 4575,
                          "loc": {
                            "start": {
                              "line": 120,
                              "column": 8
                            },
                            "end": {
                              "line": 120,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4565,
                            "end": 4569,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 8
                              },
                              "end": {
                                "line": 120,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4570,
                            "end": 4575,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 13
                              },
                              "end": {
                                "line": 120,
                                "column": 18
                              },
                              "identifierName": "touch"
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4576,
                            "end": 4580,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 19
                              },
                              "end": {
                                "line": 120,
                                "column": 23
                              },
                              "identifierName": "objA"
                            },
                            "name": "objA"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4591,
                      "end": 4608,
                      "loc": {
                        "start": {
                          "line": 121,
                          "column": 8
                        },
                        "end": {
                          "line": 121,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4591,
                        "end": 4607,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 8
                          },
                          "end": {
                            "line": 121,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4591,
                          "end": 4601,
                          "loc": {
                            "start": {
                              "line": 121,
                              "column": 8
                            },
                            "end": {
                              "line": 121,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 4591,
                            "end": 4595,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 8
                              },
                              "end": {
                                "line": 121,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4596,
                            "end": 4601,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 13
                              },
                              "end": {
                                "line": 121,
                                "column": 18
                              },
                              "identifierName": "touch"
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4602,
                            "end": 4606,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 19
                              },
                              "end": {
                                "line": 121,
                                "column": 23
                              },
                              "identifierName": "objB"
                            },
                            "name": "objB"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4617,
                      "end": 4643,
                      "loc": {
                        "start": {
                          "line": 122,
                          "column": 8
                        },
                        "end": {
                          "line": 122,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4617,
                        "end": 4642,
                        "loc": {
                          "start": {
                            "line": 122,
                            "column": 8
                          },
                          "end": {
                            "line": 122,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 4617,
                          "end": 4621,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 8
                            },
                            "end": {
                              "line": 122,
                              "column": 12
                            },
                            "identifierName": "objA"
                          },
                          "name": "objA"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 4624,
                          "end": 4642,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 15
                            },
                            "end": {
                              "line": 122,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4624,
                            "end": 4636,
                            "loc": {
                              "start": {
                                "line": 122,
                                "column": 15
                              },
                              "end": {
                                "line": 122,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4624,
                              "end": 4628,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 15
                                },
                                "end": {
                                  "line": 122,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4629,
                              "end": 4636,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 20
                                },
                                "end": {
                                  "line": 122,
                                  "column": 27
                                },
                                "identifierName": "getHead"
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4637,
                              "end": 4641,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 28
                                },
                                "end": {
                                  "line": 122,
                                  "column": 32
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4652,
                      "end": 4678,
                      "loc": {
                        "start": {
                          "line": 123,
                          "column": 8
                        },
                        "end": {
                          "line": 123,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4652,
                        "end": 4677,
                        "loc": {
                          "start": {
                            "line": 123,
                            "column": 8
                          },
                          "end": {
                            "line": 123,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 4652,
                          "end": 4656,
                          "loc": {
                            "start": {
                              "line": 123,
                              "column": 8
                            },
                            "end": {
                              "line": 123,
                              "column": 12
                            },
                            "identifierName": "objB"
                          },
                          "name": "objB"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 4659,
                          "end": 4677,
                          "loc": {
                            "start": {
                              "line": 123,
                              "column": 15
                            },
                            "end": {
                              "line": 123,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4659,
                            "end": 4671,
                            "loc": {
                              "start": {
                                "line": 123,
                                "column": 15
                              },
                              "end": {
                                "line": 123,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4659,
                              "end": 4663,
                              "loc": {
                                "start": {
                                  "line": 123,
                                  "column": 15
                                },
                                "end": {
                                  "line": 123,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4664,
                              "end": 4671,
                              "loc": {
                                "start": {
                                  "line": 123,
                                  "column": 20
                                },
                                "end": {
                                  "line": 123,
                                  "column": 27
                                },
                                "identifierName": "getHead"
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4672,
                              "end": 4676,
                              "loc": {
                                "start": {
                                  "line": 123,
                                  "column": 28
                                },
                                "end": {
                                  "line": 123,
                                  "column": 32
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4687,
                      "end": 4765,
                      "loc": {
                        "start": {
                          "line": 124,
                          "column": 8
                        },
                        "end": {
                          "line": 124,
                          "column": 86
                        }
                      },
                      "expression": {
                        "type": "ConditionalExpression",
                        "start": 4687,
                        "end": 4764,
                        "loc": {
                          "start": {
                            "line": 124,
                            "column": 8
                          },
                          "end": {
                            "line": 124,
                            "column": 85
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 4687,
                          "end": 4706,
                          "loc": {
                            "start": {
                              "line": 124,
                              "column": 8
                            },
                            "end": {
                              "line": 124,
                              "column": 27
                            }
                          },
                          "left": {
                            "type": "CallExpression",
                            "start": 4687,
                            "end": 4700,
                            "loc": {
                              "start": {
                                "line": 124,
                                "column": 8
                              },
                              "end": {
                                "line": 124,
                                "column": 21
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4687,
                              "end": 4698,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 8
                                },
                                "end": {
                                  "line": 124,
                                  "column": 19
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 4687,
                                "end": 4691,
                                "loc": {
                                  "start": {
                                    "line": 124,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 124,
                                    "column": 12
                                  },
                                  "identifierName": "Math"
                                },
                                "name": "Math"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4692,
                                "end": 4698,
                                "loc": {
                                  "start": {
                                    "line": 124,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 124,
                                    "column": 19
                                  },
                                  "identifierName": "random"
                                },
                                "name": "random"
                              },
                              "computed": false
                            },
                            "arguments": []
                          },
                          "operator": "<",
                          "right": {
                            "type": "NumericLiteral",
                            "start": 4703,
                            "end": 4706,
                            "loc": {
                              "start": {
                                "line": 124,
                                "column": 24
                              },
                              "end": {
                                "line": 124,
                                "column": 27
                              }
                            },
                            "extra": {
                              "rawValue": 0.5,
                              "raw": "0.5"
                            },
                            "value": 0.5
                          }
                        },
                        "consequent": {
                          "type": "CallExpression",
                          "start": 4709,
                          "end": 4735,
                          "loc": {
                            "start": {
                              "line": 124,
                              "column": 30
                            },
                            "end": {
                              "line": 124,
                              "column": 56
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4709,
                            "end": 4723,
                            "loc": {
                              "start": {
                                "line": 124,
                                "column": 30
                              },
                              "end": {
                                "line": 124,
                                "column": 44
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4709,
                              "end": 4713,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 30
                                },
                                "end": {
                                  "line": 124,
                                  "column": 34
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4714,
                              "end": 4723,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 35
                                },
                                "end": {
                                  "line": 124,
                                  "column": 44
                                },
                                "identifierName": "setParent"
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4724,
                              "end": 4728,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 45
                                },
                                "end": {
                                  "line": 124,
                                  "column": 49
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            },
                            {
                              "type": "Identifier",
                              "start": 4730,
                              "end": 4734,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 51
                                },
                                "end": {
                                  "line": 124,
                                  "column": 55
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            }
                          ]
                        },
                        "alternate": {
                          "type": "CallExpression",
                          "start": 4738,
                          "end": 4764,
                          "loc": {
                            "start": {
                              "line": 124,
                              "column": 59
                            },
                            "end": {
                              "line": 124,
                              "column": 85
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4738,
                            "end": 4752,
                            "loc": {
                              "start": {
                                "line": 124,
                                "column": 59
                              },
                              "end": {
                                "line": 124,
                                "column": 73
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4738,
                              "end": 4742,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 59
                                },
                                "end": {
                                  "line": 124,
                                  "column": 63
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4743,
                              "end": 4752,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 64
                                },
                                "end": {
                                  "line": 124,
                                  "column": 73
                                },
                                "identifierName": "setParent"
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4753,
                              "end": 4757,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 74
                                },
                                "end": {
                                  "line": 124,
                                  "column": 78
                                },
                                "identifierName": "objB"
                              },
                              "name": "objB"
                            },
                            {
                              "type": "Identifier",
                              "start": 4759,
                              "end": 4763,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 80
                                },
                                "end": {
                                  "line": 124,
                                  "column": 84
                                },
                                "identifierName": "objA"
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ClassMethod",
                "start": 4777,
                "end": 4845,
                "loc": {
                  "start": {
                    "line": 127,
                    "column": 4
                  },
                  "end": {
                    "line": 129,
                    "column": 5
                  }
                },
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 4777,
                  "end": 4787,
                  "loc": {
                    "start": {
                      "line": 127,
                      "column": 4
                    },
                    "end": {
                      "line": 127,
                      "column": 14
                    },
                    "identifierName": "getTouched"
                  },
                  "name": "getTouched"
                },
                "static": false,
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 4790,
                  "end": 4845,
                  "loc": {
                    "start": {
                      "line": 127,
                      "column": 17
                    },
                    "end": {
                      "line": 129,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 4800,
                      "end": 4839,
                      "loc": {
                        "start": {
                          "line": 128,
                          "column": 8
                        },
                        "end": {
                          "line": 128,
                          "column": 47
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 4807,
                        "end": 4838,
                        "loc": {
                          "start": {
                            "line": 128,
                            "column": 15
                          },
                          "end": {
                            "line": 128,
                            "column": 46
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4807,
                          "end": 4817,
                          "loc": {
                            "start": {
                              "line": 128,
                              "column": 15
                            },
                            "end": {
                              "line": 128,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4807,
                            "end": 4812,
                            "loc": {
                              "start": {
                                "line": 128,
                                "column": 15
                              },
                              "end": {
                                "line": 128,
                                "column": 20
                              },
                              "identifierName": "Array"
                            },
                            "name": "Array"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4813,
                            "end": 4817,
                            "loc": {
                              "start": {
                                "line": 128,
                                "column": 21
                              },
                              "end": {
                                "line": 128,
                                "column": 25
                              },
                              "identifierName": "from"
                            },
                            "name": "from"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "CallExpression",
                            "start": 4818,
                            "end": 4837,
                            "loc": {
                              "start": {
                                "line": 128,
                                "column": 26
                              },
                              "end": {
                                "line": 128,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 4818,
                              "end": 4835,
                              "loc": {
                                "start": {
                                  "line": 128,
                                  "column": 26
                                },
                                "end": {
                                  "line": 128,
                                  "column": 43
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 4818,
                                "end": 4830,
                                "loc": {
                                  "start": {
                                    "line": 128,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 128,
                                    "column": 38
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 4818,
                                  "end": 4822,
                                  "loc": {
                                    "start": {
                                      "line": 128,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 128,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4823,
                                  "end": 4830,
                                  "loc": {
                                    "start": {
                                      "line": 128,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 128,
                                      "column": 38
                                    },
                                    "identifierName": "parents"
                                  },
                                  "name": "parents"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4831,
                                "end": 4835,
                                "loc": {
                                  "start": {
                                    "line": 128,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 128,
                                    "column": 43
                                  },
                                  "identifierName": "keys"
                                },
                                "name": "keys"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        ]
                      }
                    }
                  ],
                  "directives": []
                }
              }
            ]
          },
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " Disjoint Set Union",
              "start": 3978,
              "end": 3999,
              "loc": {
                "start": {
                  "line": 93,
                  "column": 0
                },
                "end": {
                  "line": 93,
                  "column": 21
                }
              }
            }
          ],
          "trailingComments": []
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " Disjoint Set Union",
            "start": 3978,
            "end": 3999,
            "loc": {
              "start": {
                "line": 93,
                "column": 0
              },
              "end": {
                "line": 93,
                "column": 21
              }
            }
          }
        ]
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentLine",
      "value": " the sketch we are going to add constraints to",
      "start": 223,
      "end": 271,
      "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": 310,
      "end": 375,
      "loc": {
        "start": {
          "line": 9,
          "column": 8
        },
        "end": {
          "line": 9,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " dsu structures for incident and inc-tangent point groups",
      "start": 416,
      "end": 475,
      "loc": {
        "start": {
          "line": 12,
          "column": 8
        },
        "end": {
          "line": 12,
          "column": 67
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "this.tangencyDsu = new DSU();    // TODO!",
      "start": 523,
      "end": 566,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 51
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sets of horizontal and vertical lines",
      "start": 575,
      "end": 615,
      "loc": {
        "start": {
          "line": 15,
          "column": 8
        },
        "end": {
          "line": 15,
          "column": 48
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " preprocess all objects and constraints currently on sketch",
      "start": 703,
      "end": 764,
      "loc": {
        "start": {
          "line": 19,
          "column": 8
        },
        "end": {
          "line": 19,
          "column": 69
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " take all present constraints into account",
      "start": 814,
      "end": 858,
      "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": 1408,
      "end": 1479,
      "loc": {
        "start": {
          "line": 40,
          "column": 4
        },
        "end": {
          "line": 40,
          "column": 75
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " if a new constraint is not excessive, then take it into account",
      "start": 1642,
      "end": 1708,
      "loc": {
        "start": {
          "line": 44,
          "column": 8
        },
        "end": {
          "line": 44,
          "column": 74
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: implement more complicated handling of incidence",
      "start": 1782,
      "end": 1839,
      "loc": {
        "start": {
          "line": 47,
          "column": 16
        },
        "end": {
          "line": 47,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
      "start": 1856,
      "end": 1949,
      "loc": {
        "start": {
          "line": 48,
          "column": 16
        },
        "end": {
          "line": 48,
          "column": 109
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
      "start": 1966,
      "end": 2049,
      "loc": {
        "start": {
          "line": 49,
          "column": 16
        },
        "end": {
          "line": 49,
          "column": 99
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: optimize this O(N) search",
      "start": 2719,
      "end": 2753,
      "loc": {
        "start": {
          "line": 64,
          "column": 16
        },
        "end": {
          "line": 64,
          "column": 50
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " return constraint statements in the internal buffer, clear the buffer",
      "start": 3068,
      "end": 3140,
      "loc": {
        "start": {
          "line": 73,
          "column": 4
        },
        "end": {
          "line": 73,
          "column": 76
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " ignore parametric constraints",
      "start": 3624,
      "end": 3656,
      "loc": {
        "start": {
          "line": 85,
          "column": 22
        },
        "end": {
          "line": 85,
          "column": 54
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Disjoint Set Union",
      "start": 3978,
      "end": 3999,
      "loc": {
        "start": {
          "line": 93,
          "column": 0
        },
        "end": {
          "line": 93,
          "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": 9,
      "end": 19,
      "loc": {
        "start": {
          "line": 1,
          "column": 9
        },
        "end": {
          "line": 1,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 20,
      "end": 21,
      "loc": {
        "start": {
          "line": 1,
          "column": 20
        },
        "end": {
          "line": 1,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 22,
      "end": 26,
      "loc": {
        "start": {
          "line": 1,
          "column": 22
        },
        "end": {
          "line": 1,
          "column": 26
        }
      }
    },
    {
      "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": 27,
      "end": 49,
      "loc": {
        "start": {
          "line": 1,
          "column": 27
        },
        "end": {
          "line": 1,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 49,
      "end": 50,
      "loc": {
        "start": {
          "line": 1,
          "column": 49
        },
        "end": {
          "line": 1,
          "column": 50
        }
      }
    },
    {
      "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": 51,
      "end": 57,
      "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": 58,
      "end": 68,
      "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": 69,
      "end": 73,
      "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": 74,
      "end": 83,
      "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": 83,
      "end": 84,
      "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": 85,
      "end": 91,
      "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": 92,
      "end": 93,
      "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": 94,
      "end": 103,
      "loc": {
        "start": {
          "line": 3,
          "column": 9
        },
        "end": {
          "line": 3,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 103,
      "end": 104,
      "loc": {
        "start": {
          "line": 3,
          "column": 18
        },
        "end": {
          "line": 3,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 105,
      "end": 118,
      "loc": {
        "start": {
          "line": 3,
          "column": 20
        },
        "end": {
          "line": 3,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 118,
      "end": 119,
      "loc": {
        "start": {
          "line": 3,
          "column": 33
        },
        "end": {
          "line": 3,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticality",
      "start": 120,
      "end": 131,
      "loc": {
        "start": {
          "line": 3,
          "column": 35
        },
        "end": {
          "line": 3,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 132,
      "end": 133,
      "loc": {
        "start": {
          "line": 3,
          "column": 47
        },
        "end": {
          "line": 3,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 134,
      "end": 138,
      "loc": {
        "start": {
          "line": 3,
          "column": 49
        },
        "end": {
          "line": 3,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./type",
      "start": 139,
      "end": 147,
      "loc": {
        "start": {
          "line": 3,
          "column": 54
        },
        "end": {
          "line": 3,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 147,
      "end": 148,
      "loc": {
        "start": {
          "line": 3,
          "column": 62
        },
        "end": {
          "line": 3,
          "column": 63
        }
      }
    },
    {
      "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": 150,
      "end": 156,
      "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": 157,
      "end": 164,
      "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": 165,
      "end": 170,
      "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": 171,
      "end": 186,
      "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": 187,
      "end": 188,
      "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": 193,
      "end": 204,
      "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": 204,
      "end": 205,
      "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": 205,
      "end": 211,
      "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": 211,
      "end": 212,
      "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": 213,
      "end": 214,
      "loc": {
        "start": {
          "line": 6,
          "column": 24
        },
        "end": {
          "line": 6,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " the sketch we are going to add constraints to",
      "start": 223,
      "end": 271,
      "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": 280,
      "end": 284,
      "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": 284,
      "end": 285,
      "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": 285,
      "end": 291,
      "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": 292,
      "end": 293,
      "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": 294,
      "end": 300,
      "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": 300,
      "end": 301,
      "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": 310,
      "end": 375,
      "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": 384,
      "end": 388,
      "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": 388,
      "end": 389,
      "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": 389,
      "end": 400,
      "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": 401,
      "end": 402,
      "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": 403,
      "end": 404,
      "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": 404,
      "end": 405,
      "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": 405,
      "end": 406,
      "loc": {
        "start": {
          "line": 10,
          "column": 29
        },
        "end": {
          "line": 10,
          "column": 30
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " dsu structures for incident and inc-tangent point groups",
      "start": 416,
      "end": 475,
      "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": 484,
      "end": 488,
      "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": 488,
      "end": 489,
      "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": 489,
      "end": 501,
      "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": 502,
      "end": 503,
      "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": 504,
      "end": 507,
      "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": 508,
      "end": 511,
      "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": 511,
      "end": 512,
      "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": 512,
      "end": 513,
      "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": 513,
      "end": 514,
      "loc": {
        "start": {
          "line": 13,
          "column": 37
        },
        "end": {
          "line": 13,
          "column": 38
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "this.tangencyDsu = new DSU();    // TODO!",
      "start": 523,
      "end": 566,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 51
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sets of horizontal and vertical lines",
      "start": 575,
      "end": 615,
      "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": 624,
      "end": 628,
      "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": 628,
      "end": 629,
      "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": 629,
      "end": 642,
      "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": 643,
      "end": 644,
      "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": 645,
      "end": 648,
      "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": 649,
      "end": 652,
      "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": 652,
      "end": 653,
      "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": 653,
      "end": 654,
      "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": 654,
      "end": 655,
      "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": 664,
      "end": 668,
      "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": 668,
      "end": 669,
      "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": 669,
      "end": 680,
      "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": 681,
      "end": 682,
      "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": 683,
      "end": 686,
      "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": 687,
      "end": 690,
      "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": 690,
      "end": 691,
      "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": 691,
      "end": 692,
      "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": 692,
      "end": 693,
      "loc": {
        "start": {
          "line": 17,
          "column": 36
        },
        "end": {
          "line": 17,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " preprocess all objects and constraints currently on sketch",
      "start": 703,
      "end": 764,
      "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": 773,
      "end": 777,
      "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": 777,
      "end": 778,
      "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": 778,
      "end": 782,
      "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": 782,
      "end": 783,
      "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": 783,
      "end": 784,
      "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": 784,
      "end": 785,
      "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": 790,
      "end": 791,
      "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": 797,
      "end": 801,
      "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": 801,
      "end": 802,
      "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": 802,
      "end": 803,
      "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": 804,
      "end": 805,
      "loc": {
        "start": {
          "line": 23,
          "column": 11
        },
        "end": {
          "line": 23,
          "column": 12
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " take all present constraints into account",
      "start": 814,
      "end": 858,
      "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": 867,
      "end": 870,
      "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": 871,
      "end": 872,
      "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": 872,
      "end": 875,
      "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": 876,
      "end": 882,
      "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": 883,
      "end": 885,
      "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": 886,
      "end": 890,
      "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": 890,
      "end": 891,
      "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": 891,
      "end": 897,
      "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": 897,
      "end": 898,
      "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": 898,
      "end": 906,
      "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": 906,
      "end": 907,
      "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": 908,
      "end": 909,
      "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": 922,
      "end": 928,
      "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": 929,
      "end": 930,
      "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": 930,
      "end": 936,
      "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": 936,
      "end": 937,
      "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": 937,
      "end": 942,
      "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": 942,
      "end": 943,
      "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": 943,
      "end": 948,
      "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": 948,
      "end": 949,
      "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": 950,
      "end": 951,
      "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": 968,
      "end": 972,
      "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": 973,
      "end": 982,
      "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": 982,
      "end": 983,
      "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": 983,
      "end": 987,
      "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": 987,
      "end": 988,
      "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": 1009,
      "end": 1013,
      "loc": {
        "start": {
          "line": 28,
          "column": 20
        },
        "end": {
          "line": 28,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1013,
      "end": 1014,
      "loc": {
        "start": {
          "line": 28,
          "column": 24
        },
        "end": {
          "line": 28,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 1014,
      "end": 1026,
      "loc": {
        "start": {
          "line": 28,
          "column": 25
        },
        "end": {
          "line": 28,
          "column": 37
        }
      }
    },
    {
      "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": 28,
          "column": 37
        },
        "end": {
          "line": 28,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 1027,
      "end": 1032,
      "loc": {
        "start": {
          "line": 28,
          "column": 38
        },
        "end": {
          "line": 28,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1032,
      "end": 1033,
      "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": "object",
      "start": 1033,
      "end": 1039,
      "loc": {
        "start": {
          "line": 28,
          "column": 44
        },
        "end": {
          "line": 28,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1039,
      "end": 1040,
      "loc": {
        "start": {
          "line": 28,
          "column": 50
        },
        "end": {
          "line": 28,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1040,
      "end": 1048,
      "loc": {
        "start": {
          "line": 28,
          "column": 51
        },
        "end": {
          "line": 28,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1048,
      "end": 1049,
      "loc": {
        "start": {
          "line": 28,
          "column": 59
        },
        "end": {
          "line": 28,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1049,
      "end": 1050,
      "loc": {
        "start": {
          "line": 28,
          "column": 60
        },
        "end": {
          "line": 28,
          "column": 61
        }
      }
    },
    {
      "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": 28,
          "column": 61
        },
        "end": {
          "line": 28,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1051,
      "end": 1052,
      "loc": {
        "start": {
          "line": 28,
          "column": 62
        },
        "end": {
          "line": 28,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1052,
      "end": 1054,
      "loc": {
        "start": {
          "line": 28,
          "column": 63
        },
        "end": {
          "line": 28,
          "column": 65
        }
      }
    },
    {
      "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": 28,
          "column": 65
        },
        "end": {
          "line": 28,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1056,
      "end": 1062,
      "loc": {
        "start": {
          "line": 28,
          "column": 67
        },
        "end": {
          "line": 28,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1062,
      "end": 1063,
      "loc": {
        "start": {
          "line": 28,
          "column": 73
        },
        "end": {
          "line": 28,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1063,
      "end": 1071,
      "loc": {
        "start": {
          "line": 28,
          "column": 74
        },
        "end": {
          "line": 28,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1071,
      "end": 1072,
      "loc": {
        "start": {
          "line": 28,
          "column": 82
        },
        "end": {
          "line": 28,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 1072,
      "end": 1073,
      "loc": {
        "start": {
          "line": 28,
          "column": 83
        },
        "end": {
          "line": 28,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1073,
      "end": 1074,
      "loc": {
        "start": {
          "line": 28,
          "column": 84
        },
        "end": {
          "line": 28,
          "column": 85
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1074,
      "end": 1075,
      "loc": {
        "start": {
          "line": 28,
          "column": 85
        },
        "end": {
          "line": 28,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1075,
      "end": 1077,
      "loc": {
        "start": {
          "line": 28,
          "column": 86
        },
        "end": {
          "line": 28,
          "column": 88
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1077,
      "end": 1078,
      "loc": {
        "start": {
          "line": 28,
          "column": 88
        },
        "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": 1078,
      "end": 1079,
      "loc": {
        "start": {
          "line": 28,
          "column": 89
        },
        "end": {
          "line": 28,
          "column": 90
        }
      }
    },
    {
      "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": 1100,
      "end": 1105,
      "loc": {
        "start": {
          "line": 29,
          "column": 20
        },
        "end": {
          "line": 29,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1105,
      "end": 1106,
      "loc": {
        "start": {
          "line": 29,
          "column": 25
        },
        "end": {
          "line": 29,
          "column": 26
        }
      }
    },
    {
      "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": 1123,
      "end": 1127,
      "loc": {
        "start": {
          "line": 30,
          "column": 16
        },
        "end": {
          "line": 30,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticality",
      "start": 1128,
      "end": 1139,
      "loc": {
        "start": {
          "line": 30,
          "column": 21
        },
        "end": {
          "line": 30,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1139,
      "end": 1140,
      "loc": {
        "start": {
          "line": 30,
          "column": 32
        },
        "end": {
          "line": 30,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1140,
      "end": 1144,
      "loc": {
        "start": {
          "line": 30,
          "column": 33
        },
        "end": {
          "line": 30,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1144,
      "end": 1145,
      "loc": {
        "start": {
          "line": 30,
          "column": 37
        },
        "end": {
          "line": 30,
          "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": 1166,
      "end": 1170,
      "loc": {
        "start": {
          "line": 31,
          "column": 20
        },
        "end": {
          "line": 31,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1170,
      "end": 1171,
      "loc": {
        "start": {
          "line": 31,
          "column": 24
        },
        "end": {
          "line": 31,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 1171,
      "end": 1182,
      "loc": {
        "start": {
          "line": 31,
          "column": 25
        },
        "end": {
          "line": 31,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1182,
      "end": 1183,
      "loc": {
        "start": {
          "line": 31,
          "column": 36
        },
        "end": {
          "line": 31,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1183,
      "end": 1186,
      "loc": {
        "start": {
          "line": 31,
          "column": 37
        },
        "end": {
          "line": 31,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1186,
      "end": 1187,
      "loc": {
        "start": {
          "line": 31,
          "column": 40
        },
        "end": {
          "line": 31,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1187,
      "end": 1193,
      "loc": {
        "start": {
          "line": 31,
          "column": 41
        },
        "end": {
          "line": 31,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1193,
      "end": 1194,
      "loc": {
        "start": {
          "line": 31,
          "column": 47
        },
        "end": {
          "line": 31,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1194,
      "end": 1202,
      "loc": {
        "start": {
          "line": 31,
          "column": 48
        },
        "end": {
          "line": 31,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1202,
      "end": 1203,
      "loc": {
        "start": {
          "line": 31,
          "column": 56
        },
        "end": {
          "line": 31,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1203,
      "end": 1204,
      "loc": {
        "start": {
          "line": 31,
          "column": 57
        },
        "end": {
          "line": 31,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1204,
      "end": 1205,
      "loc": {
        "start": {
          "line": 31,
          "column": 58
        },
        "end": {
          "line": 31,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1205,
      "end": 1206,
      "loc": {
        "start": {
          "line": 31,
          "column": 59
        },
        "end": {
          "line": 31,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1206,
      "end": 1208,
      "loc": {
        "start": {
          "line": 31,
          "column": 60
        },
        "end": {
          "line": 31,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1208,
      "end": 1209,
      "loc": {
        "start": {
          "line": 31,
          "column": 62
        },
        "end": {
          "line": 31,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1209,
      "end": 1210,
      "loc": {
        "start": {
          "line": 31,
          "column": 63
        },
        "end": {
          "line": 31,
          "column": 64
        }
      }
    },
    {
      "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": 1231,
      "end": 1236,
      "loc": {
        "start": {
          "line": 32,
          "column": 20
        },
        "end": {
          "line": 32,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1236,
      "end": 1237,
      "loc": {
        "start": {
          "line": 32,
          "column": 25
        },
        "end": {
          "line": 32,
          "column": 26
        }
      }
    },
    {
      "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": 1254,
      "end": 1258,
      "loc": {
        "start": {
          "line": 33,
          "column": 16
        },
        "end": {
          "line": 33,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 1259,
      "end": 1272,
      "loc": {
        "start": {
          "line": 33,
          "column": 21
        },
        "end": {
          "line": 33,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1272,
      "end": 1273,
      "loc": {
        "start": {
          "line": 33,
          "column": 34
        },
        "end": {
          "line": 33,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1273,
      "end": 1277,
      "loc": {
        "start": {
          "line": 33,
          "column": 35
        },
        "end": {
          "line": 33,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1277,
      "end": 1278,
      "loc": {
        "start": {
          "line": 33,
          "column": 39
        },
        "end": {
          "line": 33,
          "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": 1299,
      "end": 1303,
      "loc": {
        "start": {
          "line": 34,
          "column": 20
        },
        "end": {
          "line": 34,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1303,
      "end": 1304,
      "loc": {
        "start": {
          "line": 34,
          "column": 24
        },
        "end": {
          "line": 34,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 1304,
      "end": 1317,
      "loc": {
        "start": {
          "line": 34,
          "column": 25
        },
        "end": {
          "line": 34,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1317,
      "end": 1318,
      "loc": {
        "start": {
          "line": 34,
          "column": 38
        },
        "end": {
          "line": 34,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1318,
      "end": 1321,
      "loc": {
        "start": {
          "line": 34,
          "column": 39
        },
        "end": {
          "line": 34,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1321,
      "end": 1322,
      "loc": {
        "start": {
          "line": 34,
          "column": 42
        },
        "end": {
          "line": 34,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 1322,
      "end": 1328,
      "loc": {
        "start": {
          "line": 34,
          "column": 43
        },
        "end": {
          "line": 34,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1328,
      "end": 1329,
      "loc": {
        "start": {
          "line": 34,
          "column": 49
        },
        "end": {
          "line": 34,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1329,
      "end": 1337,
      "loc": {
        "start": {
          "line": 34,
          "column": 50
        },
        "end": {
          "line": 34,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1337,
      "end": 1338,
      "loc": {
        "start": {
          "line": 34,
          "column": 58
        },
        "end": {
          "line": 34,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1338,
      "end": 1339,
      "loc": {
        "start": {
          "line": 34,
          "column": 59
        },
        "end": {
          "line": 34,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1339,
      "end": 1340,
      "loc": {
        "start": {
          "line": 34,
          "column": 60
        },
        "end": {
          "line": 34,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1340,
      "end": 1341,
      "loc": {
        "start": {
          "line": 34,
          "column": 61
        },
        "end": {
          "line": 34,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1341,
      "end": 1343,
      "loc": {
        "start": {
          "line": 34,
          "column": 62
        },
        "end": {
          "line": 34,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1343,
      "end": 1344,
      "loc": {
        "start": {
          "line": 34,
          "column": 64
        },
        "end": {
          "line": 34,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1344,
      "end": 1345,
      "loc": {
        "start": {
          "line": 34,
          "column": 65
        },
        "end": {
          "line": 34,
          "column": 66
        }
      }
    },
    {
      "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": 1366,
      "end": 1371,
      "loc": {
        "start": {
          "line": 35,
          "column": 20
        },
        "end": {
          "line": 35,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1371,
      "end": 1372,
      "loc": {
        "start": {
          "line": 35,
          "column": 25
        },
        "end": {
          "line": 35,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1385,
      "end": 1386,
      "loc": {
        "start": {
          "line": 36,
          "column": 12
        },
        "end": {
          "line": 36,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1395,
      "end": 1396,
      "loc": {
        "start": {
          "line": 37,
          "column": 8
        },
        "end": {
          "line": 37,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1401,
      "end": 1402,
      "loc": {
        "start": {
          "line": 38,
          "column": 4
        },
        "end": {
          "line": 38,
          "column": 5
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " add a new constraint to the internal buffer (if it is not excessive)",
      "start": 1408,
      "end": 1479,
      "loc": {
        "start": {
          "line": 40,
          "column": 4
        },
        "end": {
          "line": 40,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 1484,
      "end": 1487,
      "loc": {
        "start": {
          "line": 41,
          "column": 4
        },
        "end": {
          "line": 41,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1487,
      "end": 1488,
      "loc": {
        "start": {
          "line": 41,
          "column": 7
        },
        "end": {
          "line": 41,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1488,
      "end": 1492,
      "loc": {
        "start": {
          "line": 41,
          "column": 8
        },
        "end": {
          "line": 41,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1492,
      "end": 1493,
      "loc": {
        "start": {
          "line": 41,
          "column": 12
        },
        "end": {
          "line": 41,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1494,
      "end": 1502,
      "loc": {
        "start": {
          "line": 41,
          "column": 14
        },
        "end": {
          "line": 41,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1502,
      "end": 1503,
      "loc": {
        "start": {
          "line": 41,
          "column": 22
        },
        "end": {
          "line": 41,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 1504,
      "end": 1509,
      "loc": {
        "start": {
          "line": 41,
          "column": 24
        },
        "end": {
          "line": 41,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1510,
      "end": 1511,
      "loc": {
        "start": {
          "line": 41,
          "column": 30
        },
        "end": {
          "line": 41,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1512,
      "end": 1513,
      "loc": {
        "start": {
          "line": 41,
          "column": 32
        },
        "end": {
          "line": 41,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1513,
      "end": 1514,
      "loc": {
        "start": {
          "line": 41,
          "column": 33
        },
        "end": {
          "line": 41,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1514,
      "end": 1515,
      "loc": {
        "start": {
          "line": 41,
          "column": 34
        },
        "end": {
          "line": 41,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1516,
      "end": 1517,
      "loc": {
        "start": {
          "line": 41,
          "column": 36
        },
        "end": {
          "line": 41,
          "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": 1526,
      "end": 1528,
      "loc": {
        "start": {
          "line": 42,
          "column": 8
        },
        "end": {
          "line": 42,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1529,
      "end": 1530,
      "loc": {
        "start": {
          "line": 42,
          "column": 11
        },
        "end": {
          "line": 42,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1530,
      "end": 1534,
      "loc": {
        "start": {
          "line": 42,
          "column": 12
        },
        "end": {
          "line": 42,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1534,
      "end": 1535,
      "loc": {
        "start": {
          "line": 42,
          "column": 16
        },
        "end": {
          "line": 42,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1535,
      "end": 1539,
      "loc": {
        "start": {
          "line": 42,
          "column": 17
        },
        "end": {
          "line": 42,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 1540,
      "end": 1543,
      "loc": {
        "start": {
          "line": 42,
          "column": 22
        },
        "end": {
          "line": 42,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "undefined",
      "start": 1544,
      "end": 1553,
      "loc": {
        "start": {
          "line": 42,
          "column": 26
        },
        "end": {
          "line": 42,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1553,
      "end": 1554,
      "loc": {
        "start": {
          "line": 42,
          "column": 35
        },
        "end": {
          "line": 42,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1555,
      "end": 1559,
      "loc": {
        "start": {
          "line": 42,
          "column": 37
        },
        "end": {
          "line": 42,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1560,
      "end": 1561,
      "loc": {
        "start": {
          "line": 42,
          "column": 42
        },
        "end": {
          "line": 42,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1562,
      "end": 1566,
      "loc": {
        "start": {
          "line": 42,
          "column": 44
        },
        "end": {
          "line": 42,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1566,
      "end": 1567,
      "loc": {
        "start": {
          "line": 42,
          "column": 48
        },
        "end": {
          "line": 42,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1567,
      "end": 1571,
      "loc": {
        "start": {
          "line": 42,
          "column": 49
        },
        "end": {
          "line": 42,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1571,
      "end": 1572,
      "loc": {
        "start": {
          "line": 42,
          "column": 53
        },
        "end": {
          "line": 42,
          "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": 1581,
      "end": 1586,
      "loc": {
        "start": {
          "line": 43,
          "column": 8
        },
        "end": {
          "line": 43,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 1587,
      "end": 1597,
      "loc": {
        "start": {
          "line": 43,
          "column": 14
        },
        "end": {
          "line": 43,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1598,
      "end": 1599,
      "loc": {
        "start": {
          "line": 43,
          "column": 25
        },
        "end": {
          "line": 43,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1600,
      "end": 1601,
      "loc": {
        "start": {
          "line": 43,
          "column": 27
        },
        "end": {
          "line": 43,
          "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": 1602,
      "end": 1607,
      "loc": {
        "start": {
          "line": 43,
          "column": 29
        },
        "end": {
          "line": 43,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1607,
      "end": 1608,
      "loc": {
        "start": {
          "line": 43,
          "column": 34
        },
        "end": {
          "line": 43,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1609,
      "end": 1613,
      "loc": {
        "start": {
          "line": 43,
          "column": 36
        },
        "end": {
          "line": 43,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1613,
      "end": 1614,
      "loc": {
        "start": {
          "line": 43,
          "column": 40
        },
        "end": {
          "line": 43,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 1615,
      "end": 1623,
      "loc": {
        "start": {
          "line": 43,
          "column": 42
        },
        "end": {
          "line": 43,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1623,
      "end": 1624,
      "loc": {
        "start": {
          "line": 43,
          "column": 50
        },
        "end": {
          "line": 43,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 1625,
      "end": 1630,
      "loc": {
        "start": {
          "line": 43,
          "column": 52
        },
        "end": {
          "line": 43,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1631,
      "end": 1632,
      "loc": {
        "start": {
          "line": 43,
          "column": 58
        },
        "end": {
          "line": 43,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1632,
      "end": 1633,
      "loc": {
        "start": {
          "line": 43,
          "column": 59
        },
        "end": {
          "line": 43,
          "column": 60
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " if a new constraint is not excessive, then take it into account",
      "start": 1642,
      "end": 1708,
      "loc": {
        "start": {
          "line": 44,
          "column": 8
        },
        "end": {
          "line": 44,
          "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": 1717,
      "end": 1723,
      "loc": {
        "start": {
          "line": 45,
          "column": 8
        },
        "end": {
          "line": 45,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1724,
      "end": 1725,
      "loc": {
        "start": {
          "line": 45,
          "column": 15
        },
        "end": {
          "line": 45,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1725,
      "end": 1729,
      "loc": {
        "start": {
          "line": 45,
          "column": 16
        },
        "end": {
          "line": 45,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1729,
      "end": 1730,
      "loc": {
        "start": {
          "line": 45,
          "column": 20
        },
        "end": {
          "line": 45,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1731,
      "end": 1732,
      "loc": {
        "start": {
          "line": 45,
          "column": 22
        },
        "end": {
          "line": 45,
          "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": 1745,
      "end": 1749,
      "loc": {
        "start": {
          "line": 46,
          "column": 12
        },
        "end": {
          "line": 46,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidence",
      "start": 1750,
      "end": 1759,
      "loc": {
        "start": {
          "line": 46,
          "column": 17
        },
        "end": {
          "line": 46,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1759,
      "end": 1760,
      "loc": {
        "start": {
          "line": 46,
          "column": 26
        },
        "end": {
          "line": 46,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 1760,
      "end": 1764,
      "loc": {
        "start": {
          "line": 46,
          "column": 27
        },
        "end": {
          "line": 46,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1764,
      "end": 1765,
      "loc": {
        "start": {
          "line": 46,
          "column": 31
        },
        "end": {
          "line": 46,
          "column": 32
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: implement more complicated handling of incidence",
      "start": 1782,
      "end": 1839,
      "loc": {
        "start": {
          "line": 47,
          "column": 16
        },
        "end": {
          "line": 47,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
      "start": 1856,
      "end": 1949,
      "loc": {
        "start": {
          "line": 48,
          "column": 16
        },
        "end": {
          "line": 48,
          "column": 109
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
      "start": 1966,
      "end": 2049,
      "loc": {
        "start": {
          "line": 49,
          "column": 16
        },
        "end": {
          "line": 49,
          "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": 2066,
      "end": 2068,
      "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": 2069,
      "end": 2070,
      "loc": {
        "start": {
          "line": 50,
          "column": 19
        },
        "end": {
          "line": 50,
          "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": 2070,
      "end": 2074,
      "loc": {
        "start": {
          "line": 50,
          "column": 20
        },
        "end": {
          "line": 50,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2074,
      "end": 2075,
      "loc": {
        "start": {
          "line": 50,
          "column": 24
        },
        "end": {
          "line": 50,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 2075,
      "end": 2087,
      "loc": {
        "start": {
          "line": 50,
          "column": 25
        },
        "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": 2087,
      "end": 2088,
      "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": "getHead",
      "start": 2088,
      "end": 2095,
      "loc": {
        "start": {
          "line": 50,
          "column": 38
        },
        "end": {
          "line": 50,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2095,
      "end": 2096,
      "loc": {
        "start": {
          "line": 50,
          "column": 45
        },
        "end": {
          "line": 50,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2096,
      "end": 2104,
      "loc": {
        "start": {
          "line": 50,
          "column": 46
        },
        "end": {
          "line": 50,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2104,
      "end": 2105,
      "loc": {
        "start": {
          "line": 50,
          "column": 54
        },
        "end": {
          "line": 50,
          "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": 2105,
      "end": 2106,
      "loc": {
        "start": {
          "line": 50,
          "column": 55
        },
        "end": {
          "line": 50,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2106,
      "end": 2107,
      "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,
        "updateContext": null
      },
      "start": 2107,
      "end": 2108,
      "loc": {
        "start": {
          "line": 50,
          "column": 57
        },
        "end": {
          "line": 50,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2108,
      "end": 2110,
      "loc": {
        "start": {
          "line": 50,
          "column": 58
        },
        "end": {
          "line": 50,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2110,
      "end": 2111,
      "loc": {
        "start": {
          "line": 50,
          "column": 60
        },
        "end": {
          "line": 50,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 2112,
      "end": 2115,
      "loc": {
        "start": {
          "line": 50,
          "column": 62
        },
        "end": {
          "line": 50,
          "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": 2116,
      "end": 2120,
      "loc": {
        "start": {
          "line": 50,
          "column": 66
        },
        "end": {
          "line": 50,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2120,
      "end": 2121,
      "loc": {
        "start": {
          "line": 50,
          "column": 70
        },
        "end": {
          "line": 50,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "incidenceDsu",
      "start": 2121,
      "end": 2133,
      "loc": {
        "start": {
          "line": 50,
          "column": 71
        },
        "end": {
          "line": 50,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2133,
      "end": 2134,
      "loc": {
        "start": {
          "line": 50,
          "column": 83
        },
        "end": {
          "line": 50,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 2134,
      "end": 2141,
      "loc": {
        "start": {
          "line": 50,
          "column": 84
        },
        "end": {
          "line": 50,
          "column": 91
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2141,
      "end": 2142,
      "loc": {
        "start": {
          "line": 50,
          "column": 91
        },
        "end": {
          "line": 50,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2142,
      "end": 2150,
      "loc": {
        "start": {
          "line": 50,
          "column": 92
        },
        "end": {
          "line": 50,
          "column": 100
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2150,
      "end": 2151,
      "loc": {
        "start": {
          "line": 50,
          "column": 100
        },
        "end": {
          "line": 50,
          "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": 2151,
      "end": 2152,
      "loc": {
        "start": {
          "line": 50,
          "column": 101
        },
        "end": {
          "line": 50,
          "column": 102
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2152,
      "end": 2153,
      "loc": {
        "start": {
          "line": 50,
          "column": 102
        },
        "end": {
          "line": 50,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2153,
      "end": 2154,
      "loc": {
        "start": {
          "line": 50,
          "column": 103
        },
        "end": {
          "line": 50,
          "column": 104
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2154,
      "end": 2156,
      "loc": {
        "start": {
          "line": 50,
          "column": 104
        },
        "end": {
          "line": 50,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2156,
      "end": 2157,
      "loc": {
        "start": {
          "line": 50,
          "column": 106
        },
        "end": {
          "line": 50,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2157,
      "end": 2158,
      "loc": {
        "start": {
          "line": 50,
          "column": 107
        },
        "end": {
          "line": 50,
          "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": 2179,
      "end": 2183,
      "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": 2183,
      "end": 2184,
      "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": "incidenceDsu",
      "start": 2184,
      "end": 2196,
      "loc": {
        "start": {
          "line": 51,
          "column": 25
        },
        "end": {
          "line": 51,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2196,
      "end": 2197,
      "loc": {
        "start": {
          "line": 51,
          "column": 37
        },
        "end": {
          "line": 51,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 2197,
      "end": 2202,
      "loc": {
        "start": {
          "line": 51,
          "column": 38
        },
        "end": {
          "line": 51,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2202,
      "end": 2203,
      "loc": {
        "start": {
          "line": 51,
          "column": 43
        },
        "end": {
          "line": 51,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2203,
      "end": 2211,
      "loc": {
        "start": {
          "line": 51,
          "column": 44
        },
        "end": {
          "line": 51,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2211,
      "end": 2212,
      "loc": {
        "start": {
          "line": 51,
          "column": 52
        },
        "end": {
          "line": 51,
          "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": 2212,
      "end": 2213,
      "loc": {
        "start": {
          "line": 51,
          "column": 53
        },
        "end": {
          "line": 51,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2213,
      "end": 2214,
      "loc": {
        "start": {
          "line": 51,
          "column": 54
        },
        "end": {
          "line": 51,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2214,
      "end": 2215,
      "loc": {
        "start": {
          "line": 51,
          "column": 55
        },
        "end": {
          "line": 51,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2215,
      "end": 2217,
      "loc": {
        "start": {
          "line": 51,
          "column": 56
        },
        "end": {
          "line": 51,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2217,
      "end": 2218,
      "loc": {
        "start": {
          "line": 51,
          "column": 58
        },
        "end": {
          "line": 51,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2219,
      "end": 2227,
      "loc": {
        "start": {
          "line": 51,
          "column": 60
        },
        "end": {
          "line": 51,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2227,
      "end": 2228,
      "loc": {
        "start": {
          "line": 51,
          "column": 68
        },
        "end": {
          "line": 51,
          "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": 2228,
      "end": 2229,
      "loc": {
        "start": {
          "line": 51,
          "column": 69
        },
        "end": {
          "line": 51,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2229,
      "end": 2230,
      "loc": {
        "start": {
          "line": 51,
          "column": 70
        },
        "end": {
          "line": 51,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2230,
      "end": 2231,
      "loc": {
        "start": {
          "line": 51,
          "column": 71
        },
        "end": {
          "line": 51,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2231,
      "end": 2233,
      "loc": {
        "start": {
          "line": 51,
          "column": 72
        },
        "end": {
          "line": 51,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2233,
      "end": 2234,
      "loc": {
        "start": {
          "line": 51,
          "column": 74
        },
        "end": {
          "line": 51,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2234,
      "end": 2235,
      "loc": {
        "start": {
          "line": 51,
          "column": 75
        },
        "end": {
          "line": 51,
          "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": 2252,
      "end": 2256,
      "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": 2277,
      "end": 2283,
      "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": 2283,
      "end": 2284,
      "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": 2301,
      "end": 2306,
      "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": 2306,
      "end": 2307,
      "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": 2320,
      "end": 2324,
      "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": "verticality",
      "start": 2325,
      "end": 2336,
      "loc": {
        "start": {
          "line": 55,
          "column": 17
        },
        "end": {
          "line": 55,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2336,
      "end": 2337,
      "loc": {
        "start": {
          "line": 55,
          "column": 28
        },
        "end": {
          "line": 55,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 2337,
      "end": 2341,
      "loc": {
        "start": {
          "line": 55,
          "column": 29
        },
        "end": {
          "line": 55,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2341,
      "end": 2342,
      "loc": {
        "start": {
          "line": 55,
          "column": 33
        },
        "end": {
          "line": 55,
          "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": 2359,
      "end": 2361,
      "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": 2362,
      "end": 2363,
      "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": 2363,
      "end": 2364,
      "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": 2364,
      "end": 2368,
      "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": 2368,
      "end": 2369,
      "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": "verticalSet",
      "start": 2369,
      "end": 2380,
      "loc": {
        "start": {
          "line": 56,
          "column": 26
        },
        "end": {
          "line": 56,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2380,
      "end": 2381,
      "loc": {
        "start": {
          "line": 56,
          "column": 37
        },
        "end": {
          "line": 56,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 2381,
      "end": 2384,
      "loc": {
        "start": {
          "line": 56,
          "column": 38
        },
        "end": {
          "line": 56,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2384,
      "end": 2385,
      "loc": {
        "start": {
          "line": 56,
          "column": 41
        },
        "end": {
          "line": 56,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2385,
      "end": 2393,
      "loc": {
        "start": {
          "line": 56,
          "column": 42
        },
        "end": {
          "line": 56,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2393,
      "end": 2394,
      "loc": {
        "start": {
          "line": 56,
          "column": 50
        },
        "end": {
          "line": 56,
          "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": 2394,
      "end": 2395,
      "loc": {
        "start": {
          "line": 56,
          "column": 51
        },
        "end": {
          "line": 56,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2395,
      "end": 2396,
      "loc": {
        "start": {
          "line": 56,
          "column": 52
        },
        "end": {
          "line": 56,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2396,
      "end": 2397,
      "loc": {
        "start": {
          "line": 56,
          "column": 53
        },
        "end": {
          "line": 56,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2397,
      "end": 2399,
      "loc": {
        "start": {
          "line": 56,
          "column": 54
        },
        "end": {
          "line": 56,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2399,
      "end": 2400,
      "loc": {
        "start": {
          "line": 56,
          "column": 56
        },
        "end": {
          "line": 56,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2400,
      "end": 2401,
      "loc": {
        "start": {
          "line": 56,
          "column": 57
        },
        "end": {
          "line": 56,
          "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": 2402,
      "end": 2406,
      "loc": {
        "start": {
          "line": 56,
          "column": 59
        },
        "end": {
          "line": 56,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2406,
      "end": 2407,
      "loc": {
        "start": {
          "line": 56,
          "column": 63
        },
        "end": {
          "line": 56,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verticalSet",
      "start": 2407,
      "end": 2418,
      "loc": {
        "start": {
          "line": 56,
          "column": 64
        },
        "end": {
          "line": 56,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2418,
      "end": 2419,
      "loc": {
        "start": {
          "line": 56,
          "column": 75
        },
        "end": {
          "line": 56,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 2419,
      "end": 2422,
      "loc": {
        "start": {
          "line": 56,
          "column": 76
        },
        "end": {
          "line": 56,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2422,
      "end": 2423,
      "loc": {
        "start": {
          "line": 56,
          "column": 79
        },
        "end": {
          "line": 56,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2423,
      "end": 2431,
      "loc": {
        "start": {
          "line": 56,
          "column": 80
        },
        "end": {
          "line": 56,
          "column": 88
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2431,
      "end": 2432,
      "loc": {
        "start": {
          "line": 56,
          "column": 88
        },
        "end": {
          "line": 56,
          "column": 89
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2432,
      "end": 2433,
      "loc": {
        "start": {
          "line": 56,
          "column": 89
        },
        "end": {
          "line": 56,
          "column": 90
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2433,
      "end": 2434,
      "loc": {
        "start": {
          "line": 56,
          "column": 90
        },
        "end": {
          "line": 56,
          "column": 91
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2434,
      "end": 2435,
      "loc": {
        "start": {
          "line": 56,
          "column": 91
        },
        "end": {
          "line": 56,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2435,
      "end": 2437,
      "loc": {
        "start": {
          "line": 56,
          "column": 92
        },
        "end": {
          "line": 56,
          "column": 94
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2437,
      "end": 2438,
      "loc": {
        "start": {
          "line": 56,
          "column": 94
        },
        "end": {
          "line": 56,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2438,
      "end": 2439,
      "loc": {
        "start": {
          "line": 56,
          "column": 95
        },
        "end": {
          "line": 56,
          "column": 96
        }
      }
    },
    {
      "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": 2456,
      "end": 2460,
      "loc": {
        "start": {
          "line": 57,
          "column": 16
        },
        "end": {
          "line": 57,
          "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": 2461,
      "end": 2467,
      "loc": {
        "start": {
          "line": 57,
          "column": 21
        },
        "end": {
          "line": 57,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2467,
      "end": 2468,
      "loc": {
        "start": {
          "line": 57,
          "column": 27
        },
        "end": {
          "line": 57,
          "column": 28
        }
      }
    },
    {
      "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": 2485,
      "end": 2490,
      "loc": {
        "start": {
          "line": 58,
          "column": 16
        },
        "end": {
          "line": 58,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2490,
      "end": 2491,
      "loc": {
        "start": {
          "line": 58,
          "column": 21
        },
        "end": {
          "line": 58,
          "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": 2504,
      "end": 2508,
      "loc": {
        "start": {
          "line": 59,
          "column": 12
        },
        "end": {
          "line": 59,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontality",
      "start": 2509,
      "end": 2522,
      "loc": {
        "start": {
          "line": 59,
          "column": 17
        },
        "end": {
          "line": 59,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2522,
      "end": 2523,
      "loc": {
        "start": {
          "line": 59,
          "column": 30
        },
        "end": {
          "line": 59,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 2523,
      "end": 2527,
      "loc": {
        "start": {
          "line": 59,
          "column": 31
        },
        "end": {
          "line": 59,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2527,
      "end": 2528,
      "loc": {
        "start": {
          "line": 59,
          "column": 35
        },
        "end": {
          "line": 59,
          "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": 2545,
      "end": 2547,
      "loc": {
        "start": {
          "line": 60,
          "column": 16
        },
        "end": {
          "line": 60,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2548,
      "end": 2549,
      "loc": {
        "start": {
          "line": 60,
          "column": 19
        },
        "end": {
          "line": 60,
          "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": 2549,
      "end": 2550,
      "loc": {
        "start": {
          "line": 60,
          "column": 20
        },
        "end": {
          "line": 60,
          "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": 2550,
      "end": 2554,
      "loc": {
        "start": {
          "line": 60,
          "column": 21
        },
        "end": {
          "line": 60,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2554,
      "end": 2555,
      "loc": {
        "start": {
          "line": 60,
          "column": 25
        },
        "end": {
          "line": 60,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 2555,
      "end": 2568,
      "loc": {
        "start": {
          "line": 60,
          "column": 26
        },
        "end": {
          "line": 60,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2568,
      "end": 2569,
      "loc": {
        "start": {
          "line": 60,
          "column": 39
        },
        "end": {
          "line": 60,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 2569,
      "end": 2572,
      "loc": {
        "start": {
          "line": 60,
          "column": 40
        },
        "end": {
          "line": 60,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2572,
      "end": 2573,
      "loc": {
        "start": {
          "line": 60,
          "column": 43
        },
        "end": {
          "line": 60,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2573,
      "end": 2581,
      "loc": {
        "start": {
          "line": 60,
          "column": 44
        },
        "end": {
          "line": 60,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2581,
      "end": 2582,
      "loc": {
        "start": {
          "line": 60,
          "column": 52
        },
        "end": {
          "line": 60,
          "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": 2582,
      "end": 2583,
      "loc": {
        "start": {
          "line": 60,
          "column": 53
        },
        "end": {
          "line": 60,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2583,
      "end": 2584,
      "loc": {
        "start": {
          "line": 60,
          "column": 54
        },
        "end": {
          "line": 60,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2584,
      "end": 2585,
      "loc": {
        "start": {
          "line": 60,
          "column": 55
        },
        "end": {
          "line": 60,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2585,
      "end": 2587,
      "loc": {
        "start": {
          "line": 60,
          "column": 56
        },
        "end": {
          "line": 60,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2587,
      "end": 2588,
      "loc": {
        "start": {
          "line": 60,
          "column": 58
        },
        "end": {
          "line": 60,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2588,
      "end": 2589,
      "loc": {
        "start": {
          "line": 60,
          "column": 59
        },
        "end": {
          "line": 60,
          "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": 2590,
      "end": 2594,
      "loc": {
        "start": {
          "line": 60,
          "column": 61
        },
        "end": {
          "line": 60,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2594,
      "end": 2595,
      "loc": {
        "start": {
          "line": 60,
          "column": 65
        },
        "end": {
          "line": 60,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "horizontalSet",
      "start": 2595,
      "end": 2608,
      "loc": {
        "start": {
          "line": 60,
          "column": 66
        },
        "end": {
          "line": 60,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2608,
      "end": 2609,
      "loc": {
        "start": {
          "line": 60,
          "column": 79
        },
        "end": {
          "line": 60,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 2609,
      "end": 2612,
      "loc": {
        "start": {
          "line": 60,
          "column": 80
        },
        "end": {
          "line": 60,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2612,
      "end": 2613,
      "loc": {
        "start": {
          "line": 60,
          "column": 83
        },
        "end": {
          "line": 60,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 2613,
      "end": 2621,
      "loc": {
        "start": {
          "line": 60,
          "column": 84
        },
        "end": {
          "line": 60,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2621,
      "end": 2622,
      "loc": {
        "start": {
          "line": 60,
          "column": 92
        },
        "end": {
          "line": 60,
          "column": 93
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2622,
      "end": 2623,
      "loc": {
        "start": {
          "line": 60,
          "column": 93
        },
        "end": {
          "line": 60,
          "column": 94
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2623,
      "end": 2624,
      "loc": {
        "start": {
          "line": 60,
          "column": 94
        },
        "end": {
          "line": 60,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2624,
      "end": 2625,
      "loc": {
        "start": {
          "line": 60,
          "column": 95
        },
        "end": {
          "line": 60,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 2625,
      "end": 2627,
      "loc": {
        "start": {
          "line": 60,
          "column": 96
        },
        "end": {
          "line": 60,
          "column": 98
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2627,
      "end": 2628,
      "loc": {
        "start": {
          "line": 60,
          "column": 98
        },
        "end": {
          "line": 60,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2628,
      "end": 2629,
      "loc": {
        "start": {
          "line": 60,
          "column": 99
        },
        "end": {
          "line": 60,
          "column": 100
        }
      }
    },
    {
      "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": 2646,
      "end": 2650,
      "loc": {
        "start": {
          "line": 61,
          "column": 16
        },
        "end": {
          "line": 61,
          "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": 2651,
      "end": 2657,
      "loc": {
        "start": {
          "line": 61,
          "column": 21
        },
        "end": {
          "line": 61,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2657,
      "end": 2658,
      "loc": {
        "start": {
          "line": 61,
          "column": 27
        },
        "end": {
          "line": 61,
          "column": 28
        }
      }
    },
    {
      "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": 2675,
      "end": 2680,
      "loc": {
        "start": {
          "line": 62,
          "column": 16
        },
        "end": {
          "line": 62,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2680,
      "end": 2681,
      "loc": {
        "start": {
          "line": 62,
          "column": 21
        },
        "end": {
          "line": 62,
          "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": 2694,
      "end": 2701,
      "loc": {
        "start": {
          "line": 63,
          "column": 12
        },
        "end": {
          "line": 63,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2701,
      "end": 2702,
      "loc": {
        "start": {
          "line": 63,
          "column": 19
        },
        "end": {
          "line": 63,
          "column": 20
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: optimize this O(N) search",
      "start": 2719,
      "end": 2753,
      "loc": {
        "start": {
          "line": 64,
          "column": 16
        },
        "end": {
          "line": 64,
          "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": 2770,
      "end": 2772,
      "loc": {
        "start": {
          "line": 65,
          "column": 16
        },
        "end": {
          "line": 65,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2773,
      "end": 2774,
      "loc": {
        "start": {
          "line": 65,
          "column": 19
        },
        "end": {
          "line": 65,
          "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": 2774,
      "end": 2778,
      "loc": {
        "start": {
          "line": 65,
          "column": 20
        },
        "end": {
          "line": 65,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2778,
      "end": 2779,
      "loc": {
        "start": {
          "line": 65,
          "column": 24
        },
        "end": {
          "line": 65,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constraints",
      "start": 2779,
      "end": 2790,
      "loc": {
        "start": {
          "line": 65,
          "column": 25
        },
        "end": {
          "line": 65,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2790,
      "end": 2791,
      "loc": {
        "start": {
          "line": 65,
          "column": 36
        },
        "end": {
          "line": 65,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "some",
      "start": 2791,
      "end": 2795,
      "loc": {
        "start": {
          "line": 65,
          "column": 37
        },
        "end": {
          "line": 65,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2795,
      "end": 2796,
      "loc": {
        "start": {
          "line": 65,
          "column": 41
        },
        "end": {
          "line": 65,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr",
      "start": 2796,
      "end": 2802,
      "loc": {
        "start": {
          "line": 65,
          "column": 42
        },
        "end": {
          "line": 65,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2803,
      "end": 2805,
      "loc": {
        "start": {
          "line": 65,
          "column": 49
        },
        "end": {
          "line": 65,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExcessive",
      "start": 2806,
      "end": 2817,
      "loc": {
        "start": {
          "line": 65,
          "column": 52
        },
        "end": {
          "line": 65,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2817,
      "end": 2818,
      "loc": {
        "start": {
          "line": 65,
          "column": 63
        },
        "end": {
          "line": 65,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2818,
      "end": 2828,
      "loc": {
        "start": {
          "line": 65,
          "column": 64
        },
        "end": {
          "line": 65,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2828,
      "end": 2829,
      "loc": {
        "start": {
          "line": 65,
          "column": 74
        },
        "end": {
          "line": 65,
          "column": 75
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr",
      "start": 2830,
      "end": 2836,
      "loc": {
        "start": {
          "line": 65,
          "column": 76
        },
        "end": {
          "line": 65,
          "column": 82
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2836,
      "end": 2837,
      "loc": {
        "start": {
          "line": 65,
          "column": 82
        },
        "end": {
          "line": 65,
          "column": 83
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2837,
      "end": 2838,
      "loc": {
        "start": {
          "line": 65,
          "column": 83
        },
        "end": {
          "line": 65,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2838,
      "end": 2839,
      "loc": {
        "start": {
          "line": 65,
          "column": 84
        },
        "end": {
          "line": 65,
          "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": 2840,
      "end": 2846,
      "loc": {
        "start": {
          "line": 65,
          "column": 86
        },
        "end": {
          "line": 65,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2846,
      "end": 2847,
      "loc": {
        "start": {
          "line": 65,
          "column": 92
        },
        "end": {
          "line": 65,
          "column": 93
        }
      }
    },
    {
      "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": 2864,
      "end": 2867,
      "loc": {
        "start": {
          "line": 66,
          "column": 16
        },
        "end": {
          "line": 66,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2868,
      "end": 2869,
      "loc": {
        "start": {
          "line": 66,
          "column": 20
        },
        "end": {
          "line": 66,
          "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": 2869,
      "end": 2872,
      "loc": {
        "start": {
          "line": 66,
          "column": 21
        },
        "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": "object",
      "start": 2873,
      "end": 2879,
      "loc": {
        "start": {
          "line": 66,
          "column": 25
        },
        "end": {
          "line": 66,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "of",
      "start": 2880,
      "end": 2882,
      "loc": {
        "start": {
          "line": 66,
          "column": 32
        },
        "end": {
          "line": 66,
          "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": 2883,
      "end": 2887,
      "loc": {
        "start": {
          "line": 66,
          "column": 35
        },
        "end": {
          "line": 66,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2887,
      "end": 2888,
      "loc": {
        "start": {
          "line": 66,
          "column": 39
        },
        "end": {
          "line": 66,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketch",
      "start": 2888,
      "end": 2894,
      "loc": {
        "start": {
          "line": 66,
          "column": 40
        },
        "end": {
          "line": 66,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2894,
      "end": 2895,
      "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": "children",
      "start": 2895,
      "end": 2903,
      "loc": {
        "start": {
          "line": 66,
          "column": 47
        },
        "end": {
          "line": 66,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2903,
      "end": 2904,
      "loc": {
        "start": {
          "line": 66,
          "column": 55
        },
        "end": {
          "line": 66,
          "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": 2925,
      "end": 2927,
      "loc": {
        "start": {
          "line": 67,
          "column": 20
        },
        "end": {
          "line": 67,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2928,
      "end": 2929,
      "loc": {
        "start": {
          "line": 67,
          "column": 23
        },
        "end": {
          "line": 67,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExcessive",
      "start": 2929,
      "end": 2940,
      "loc": {
        "start": {
          "line": 67,
          "column": 24
        },
        "end": {
          "line": 67,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2940,
      "end": 2941,
      "loc": {
        "start": {
          "line": 67,
          "column": 35
        },
        "end": {
          "line": 67,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2941,
      "end": 2951,
      "loc": {
        "start": {
          "line": 67,
          "column": 36
        },
        "end": {
          "line": 67,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2951,
      "end": 2952,
      "loc": {
        "start": {
          "line": 67,
          "column": 46
        },
        "end": {
          "line": 67,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "object",
      "start": 2953,
      "end": 2959,
      "loc": {
        "start": {
          "line": 67,
          "column": 48
        },
        "end": {
          "line": 67,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2959,
      "end": 2960,
      "loc": {
        "start": {
          "line": 67,
          "column": 54
        },
        "end": {
          "line": 67,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "geomParams",
      "start": 2960,
      "end": 2970,
      "loc": {
        "start": {
          "line": 67,
          "column": 55
        },
        "end": {
          "line": 67,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2970,
      "end": 2971,
      "loc": {
        "start": {
          "line": 67,
          "column": 65
        },
        "end": {
          "line": 67,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2971,
      "end": 2972,
      "loc": {
        "start": {
          "line": 67,
          "column": 66
        },
        "end": {
          "line": 67,
          "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": 2973,
      "end": 2979,
      "loc": {
        "start": {
          "line": 67,
          "column": 68
        },
        "end": {
          "line": 67,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2979,
      "end": 2980,
      "loc": {
        "start": {
          "line": 67,
          "column": 74
        },
        "end": {
          "line": 67,
          "column": 75
        }
      }
    },
    {
      "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": 2997,
      "end": 3002,
      "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": 3002,
      "end": 3003,
      "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": 3012,
      "end": 3013,
      "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": 3022,
      "end": 3026,
      "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": 3026,
      "end": 3027,
      "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": 3027,
      "end": 3038,
      "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": 3038,
      "end": 3039,
      "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": 3039,
      "end": 3043,
      "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": 3043,
      "end": 3044,
      "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": 3044,
      "end": 3054,
      "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": 3054,
      "end": 3055,
      "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": 3055,
      "end": 3056,
      "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": 3061,
      "end": 3062,
      "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": 3068,
      "end": 3140,
      "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": 3145,
      "end": 3151,
      "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": 3151,
      "end": 3152,
      "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": 3152,
      "end": 3153,
      "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": 3154,
      "end": 3155,
      "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": 3164,
      "end": 3169,
      "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": 3170,
      "end": 3180,
      "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": 3181,
      "end": 3182,
      "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": 3183,
      "end": 3187,
      "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": 3187,
      "end": 3188,
      "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": 3188,
      "end": 3199,
      "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": 3199,
      "end": 3200,
      "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": 3200,
      "end": 3203,
      "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": 3203,
      "end": 3204,
      "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": 3204,
      "end": 3214,
      "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": 3215,
      "end": 3217,
      "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": 3218,
      "end": 3228,
      "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": 3228,
      "end": 3229,
      "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": 3229,
      "end": 3233,
      "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": 3233,
      "end": 3234,
      "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": 3234,
      "end": 3240,
      "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": 3240,
      "end": 3241,
      "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": 3242,
      "end": 3252,
      "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": 3252,
      "end": 3253,
      "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": 3253,
      "end": 3254,
      "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": 3254,
      "end": 3255,
      "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": 3264,
      "end": 3268,
      "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": 3268,
      "end": 3269,
      "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": 3269,
      "end": 3280,
      "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": 3281,
      "end": 3282,
      "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": 3283,
      "end": 3284,
      "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": 3284,
      "end": 3285,
      "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": 3285,
      "end": 3286,
      "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": 3295,
      "end": 3301,
      "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": 3302,
      "end": 3312,
      "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": 3312,
      "end": 3313,
      "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": 3318,
      "end": 3319,
      "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": 3320,
      "end": 3321,
      "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": 3323,
      "end": 3331,
      "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": 3332,
      "end": 3343,
      "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": 3343,
      "end": 3344,
      "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": 3344,
      "end": 3351,
      "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": 3351,
      "end": 3352,
      "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": 3353,
      "end": 3360,
      "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": 3360,
      "end": 3361,
      "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": 3362,
      "end": 3363,
      "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": 3368,
      "end": 3370,
      "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": 3371,
      "end": 3372,
      "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": 3372,
      "end": 3379,
      "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": 3379,
      "end": 3380,
      "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": 3380,
      "end": 3385,
      "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": 3386,
      "end": 3389,
      "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": 3390,
      "end": 3397,
      "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": 3397,
      "end": 3398,
      "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": 3398,
      "end": 3403,
      "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": 3403,
      "end": 3404,
      "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": 3405,
      "end": 3411,
      "loc": {
        "start": {
          "line": 82,
          "column": 41
        },
        "end": {
          "line": 82,
          "column": 47
        }
      }
    },
    {
      "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": 3412,
      "end": 3417,
      "loc": {
        "start": {
          "line": 82,
          "column": 48
        },
        "end": {
          "line": 82,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3417,
      "end": 3418,
      "loc": {
        "start": {
          "line": 82,
          "column": 53
        },
        "end": {
          "line": 82,
          "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": 3423,
      "end": 3425,
      "loc": {
        "start": {
          "line": 83,
          "column": 4
        },
        "end": {
          "line": 83,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3426,
      "end": 3427,
      "loc": {
        "start": {
          "line": 83,
          "column": 7
        },
        "end": {
          "line": 83,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3427,
      "end": 3434,
      "loc": {
        "start": {
          "line": 83,
          "column": 8
        },
        "end": {
          "line": 83,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3434,
      "end": 3435,
      "loc": {
        "start": {
          "line": 83,
          "column": 15
        },
        "end": {
          "line": 83,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3435,
      "end": 3443,
      "loc": {
        "start": {
          "line": 83,
          "column": 16
        },
        "end": {
          "line": 83,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3443,
      "end": 3444,
      "loc": {
        "start": {
          "line": 83,
          "column": 24
        },
        "end": {
          "line": 83,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "length",
      "start": 3444,
      "end": 3450,
      "loc": {
        "start": {
          "line": 83,
          "column": 25
        },
        "end": {
          "line": 83,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 3451,
      "end": 3454,
      "loc": {
        "start": {
          "line": 83,
          "column": 32
        },
        "end": {
          "line": 83,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3455,
      "end": 3462,
      "loc": {
        "start": {
          "line": 83,
          "column": 36
        },
        "end": {
          "line": 83,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3462,
      "end": 3463,
      "loc": {
        "start": {
          "line": 83,
          "column": 43
        },
        "end": {
          "line": 83,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3463,
      "end": 3471,
      "loc": {
        "start": {
          "line": 83,
          "column": 44
        },
        "end": {
          "line": 83,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3471,
      "end": 3472,
      "loc": {
        "start": {
          "line": 83,
          "column": 52
        },
        "end": {
          "line": 83,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "length",
      "start": 3472,
      "end": 3478,
      "loc": {
        "start": {
          "line": 83,
          "column": 53
        },
        "end": {
          "line": 83,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3478,
      "end": 3479,
      "loc": {
        "start": {
          "line": 83,
          "column": 59
        },
        "end": {
          "line": 83,
          "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": 3480,
      "end": 3486,
      "loc": {
        "start": {
          "line": 83,
          "column": 61
        },
        "end": {
          "line": 83,
          "column": 67
        }
      }
    },
    {
      "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": 3487,
      "end": 3492,
      "loc": {
        "start": {
          "line": 83,
          "column": 68
        },
        "end": {
          "line": 83,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3492,
      "end": 3493,
      "loc": {
        "start": {
          "line": 83,
          "column": 73
        },
        "end": {
          "line": 83,
          "column": 74
        }
      }
    },
    {
      "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": 3498,
      "end": 3500,
      "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": 3501,
      "end": 3502,
      "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": 3502,
      "end": 3509,
      "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": 3509,
      "end": 3510,
      "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": "value",
      "start": 3510,
      "end": 3515,
      "loc": {
        "start": {
          "line": 84,
          "column": 16
        },
        "end": {
          "line": 84,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3515,
      "end": 3516,
      "loc": {
        "start": {
          "line": 84,
          "column": 21
        },
        "end": {
          "line": 84,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3516,
      "end": 3521,
      "loc": {
        "start": {
          "line": 84,
          "column": 22
        },
        "end": {
          "line": 84,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3522,
      "end": 3524,
      "loc": {
        "start": {
          "line": 84,
          "column": 28
        },
        "end": {
          "line": 84,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3525,
      "end": 3532,
      "loc": {
        "start": {
          "line": 84,
          "column": 31
        },
        "end": {
          "line": 84,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3532,
      "end": 3533,
      "loc": {
        "start": {
          "line": 84,
          "column": 38
        },
        "end": {
          "line": 84,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3533,
      "end": 3538,
      "loc": {
        "start": {
          "line": 84,
          "column": 39
        },
        "end": {
          "line": 84,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3538,
      "end": 3539,
      "loc": {
        "start": {
          "line": 84,
          "column": 44
        },
        "end": {
          "line": 84,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3539,
      "end": 3544,
      "loc": {
        "start": {
          "line": 84,
          "column": 45
        },
        "end": {
          "line": 84,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3545,
      "end": 3547,
      "loc": {
        "start": {
          "line": 84,
          "column": 51
        },
        "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": "constr0",
      "start": 3548,
      "end": 3555,
      "loc": {
        "start": {
          "line": 84,
          "column": 54
        },
        "end": {
          "line": 84,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3555,
      "end": 3556,
      "loc": {
        "start": {
          "line": 84,
          "column": 61
        },
        "end": {
          "line": 84,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3556,
      "end": 3561,
      "loc": {
        "start": {
          "line": 84,
          "column": 62
        },
        "end": {
          "line": 84,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3561,
      "end": 3562,
      "loc": {
        "start": {
          "line": 84,
          "column": 67
        },
        "end": {
          "line": 84,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "expression",
      "start": 3562,
      "end": 3572,
      "loc": {
        "start": {
          "line": 84,
          "column": 68
        },
        "end": {
          "line": 84,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 3573,
      "end": 3575,
      "loc": {
        "start": {
          "line": 84,
          "column": 79
        },
        "end": {
          "line": 84,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3576,
      "end": 3583,
      "loc": {
        "start": {
          "line": 84,
          "column": 82
        },
        "end": {
          "line": 84,
          "column": 89
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3583,
      "end": 3584,
      "loc": {
        "start": {
          "line": 84,
          "column": 89
        },
        "end": {
          "line": 84,
          "column": 90
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "value",
      "start": 3584,
      "end": 3589,
      "loc": {
        "start": {
          "line": 84,
          "column": 90
        },
        "end": {
          "line": 84,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3589,
      "end": 3590,
      "loc": {
        "start": {
          "line": 84,
          "column": 95
        },
        "end": {
          "line": 84,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "expression",
      "start": 3590,
      "end": 3600,
      "loc": {
        "start": {
          "line": 84,
          "column": 96
        },
        "end": {
          "line": 84,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3600,
      "end": 3601,
      "loc": {
        "start": {
          "line": 84,
          "column": 106
        },
        "end": {
          "line": 84,
          "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": 3610,
      "end": 3616,
      "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": 3617,
      "end": 3622,
      "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": 3622,
      "end": 3623,
      "loc": {
        "start": {
          "line": 85,
          "column": 20
        },
        "end": {
          "line": 85,
          "column": 21
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " ignore parametric constraints",
      "start": 3624,
      "end": 3656,
      "loc": {
        "start": {
          "line": 85,
          "column": 22
        },
        "end": {
          "line": 85,
          "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": 3661,
      "end": 3663,
      "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": 3664,
      "end": 3665,
      "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": 3665,
      "end": 3672,
      "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": 3672,
      "end": 3673,
      "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": "entities",
      "start": 3673,
      "end": 3681,
      "loc": {
        "start": {
          "line": 86,
          "column": 16
        },
        "end": {
          "line": 86,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3681,
      "end": 3682,
      "loc": {
        "start": {
          "line": 86,
          "column": 24
        },
        "end": {
          "line": 86,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "every",
      "start": 3682,
      "end": 3687,
      "loc": {
        "start": {
          "line": 86,
          "column": 25
        },
        "end": {
          "line": 86,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3687,
      "end": 3688,
      "loc": {
        "start": {
          "line": 86,
          "column": 30
        },
        "end": {
          "line": 86,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3688,
      "end": 3689,
      "loc": {
        "start": {
          "line": 86,
          "column": 31
        },
        "end": {
          "line": 86,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3689,
      "end": 3692,
      "loc": {
        "start": {
          "line": 86,
          "column": 32
        },
        "end": {
          "line": 86,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3692,
      "end": 3693,
      "loc": {
        "start": {
          "line": 86,
          "column": 35
        },
        "end": {
          "line": 86,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3694,
      "end": 3697,
      "loc": {
        "start": {
          "line": 86,
          "column": 37
        },
        "end": {
          "line": 86,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3697,
      "end": 3698,
      "loc": {
        "start": {
          "line": 86,
          "column": 40
        },
        "end": {
          "line": 86,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3699,
      "end": 3701,
      "loc": {
        "start": {
          "line": 86,
          "column": 42
        },
        "end": {
          "line": 86,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3702,
      "end": 3705,
      "loc": {
        "start": {
          "line": 86,
          "column": 45
        },
        "end": {
          "line": 86,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3705,
      "end": 3706,
      "loc": {
        "start": {
          "line": 86,
          "column": 48
        },
        "end": {
          "line": 86,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3706,
      "end": 3708,
      "loc": {
        "start": {
          "line": 86,
          "column": 49
        },
        "end": {
          "line": 86,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3709,
      "end": 3712,
      "loc": {
        "start": {
          "line": 86,
          "column": 52
        },
        "end": {
          "line": 86,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr1",
      "start": 3713,
      "end": 3720,
      "loc": {
        "start": {
          "line": 86,
          "column": 56
        },
        "end": {
          "line": 86,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3720,
      "end": 3721,
      "loc": {
        "start": {
          "line": 86,
          "column": 63
        },
        "end": {
          "line": 86,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3721,
      "end": 3729,
      "loc": {
        "start": {
          "line": 86,
          "column": 64
        },
        "end": {
          "line": 86,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3729,
      "end": 3730,
      "loc": {
        "start": {
          "line": 86,
          "column": 72
        },
        "end": {
          "line": 86,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3730,
      "end": 3733,
      "loc": {
        "start": {
          "line": 86,
          "column": 73
        },
        "end": {
          "line": 86,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3733,
      "end": 3734,
      "loc": {
        "start": {
          "line": 86,
          "column": 76
        },
        "end": {
          "line": 86,
          "column": 77
        }
      }
    },
    {
      "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": 86,
          "column": 77
        },
        "end": {
          "line": 86,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3735,
      "end": 3737,
      "loc": {
        "start": {
          "line": 86,
          "column": 78
        },
        "end": {
          "line": 86,
          "column": 80
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3737,
      "end": 3738,
      "loc": {
        "start": {
          "line": 86,
          "column": 80
        },
        "end": {
          "line": 86,
          "column": 81
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3738,
      "end": 3739,
      "loc": {
        "start": {
          "line": 86,
          "column": 81
        },
        "end": {
          "line": 86,
          "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": 3740,
      "end": 3746,
      "loc": {
        "start": {
          "line": 86,
          "column": 83
        },
        "end": {
          "line": 86,
          "column": 89
        }
      }
    },
    {
      "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": 3747,
      "end": 3751,
      "loc": {
        "start": {
          "line": 86,
          "column": 90
        },
        "end": {
          "line": 86,
          "column": 94
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3751,
      "end": 3752,
      "loc": {
        "start": {
          "line": 86,
          "column": 94
        },
        "end": {
          "line": 86,
          "column": 95
        }
      }
    },
    {
      "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": 3757,
      "end": 3762,
      "loc": {
        "start": {
          "line": 87,
          "column": 4
        },
        "end": {
          "line": 87,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isBinaryCommutative",
      "start": 3763,
      "end": 3782,
      "loc": {
        "start": {
          "line": 87,
          "column": 10
        },
        "end": {
          "line": 87,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3783,
      "end": 3784,
      "loc": {
        "start": {
          "line": 87,
          "column": 30
        },
        "end": {
          "line": 87,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Constraint",
      "start": 3785,
      "end": 3795,
      "loc": {
        "start": {
          "line": 87,
          "column": 32
        },
        "end": {
          "line": 87,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3795,
      "end": 3796,
      "loc": {
        "start": {
          "line": 87,
          "column": 42
        },
        "end": {
          "line": 87,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3796,
      "end": 3803,
      "loc": {
        "start": {
          "line": 87,
          "column": 43
        },
        "end": {
          "line": 87,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3803,
      "end": 3804,
      "loc": {
        "start": {
          "line": 87,
          "column": 50
        },
        "end": {
          "line": 87,
          "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": 3804,
      "end": 3809,
      "loc": {
        "start": {
          "line": 87,
          "column": 51
        },
        "end": {
          "line": 87,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3809,
      "end": 3810,
      "loc": {
        "start": {
          "line": 87,
          "column": 56
        },
        "end": {
          "line": 87,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3810,
      "end": 3811,
      "loc": {
        "start": {
          "line": 87,
          "column": 57
        },
        "end": {
          "line": 87,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isCommutative",
      "start": 3811,
      "end": 3824,
      "loc": {
        "start": {
          "line": 87,
          "column": 58
        },
        "end": {
          "line": 87,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3824,
      "end": 3825,
      "loc": {
        "start": {
          "line": 87,
          "column": 71
        },
        "end": {
          "line": 87,
          "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": 3830,
      "end": 3832,
      "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": 3833,
      "end": 3834,
      "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": "isBinaryCommutative",
      "start": 3834,
      "end": 3853,
      "loc": {
        "start": {
          "line": 88,
          "column": 8
        },
        "end": {
          "line": 88,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3854,
      "end": 3856,
      "loc": {
        "start": {
          "line": 88,
          "column": 28
        },
        "end": {
          "line": 88,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constr0",
      "start": 3857,
      "end": 3864,
      "loc": {
        "start": {
          "line": 88,
          "column": 31
        },
        "end": {
          "line": 88,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3864,
      "end": 3865,
      "loc": {
        "start": {
          "line": 88,
          "column": 38
        },
        "end": {
          "line": 88,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3865,
      "end": 3873,
      "loc": {
        "start": {
          "line": 88,
          "column": 39
        },
        "end": {
          "line": 88,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3873,
      "end": 3874,
      "loc": {
        "start": {
          "line": 88,
          "column": 47
        },
        "end": {
          "line": 88,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "every",
      "start": 3874,
      "end": 3879,
      "loc": {
        "start": {
          "line": 88,
          "column": 48
        },
        "end": {
          "line": 88,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3879,
      "end": 3880,
      "loc": {
        "start": {
          "line": 88,
          "column": 53
        },
        "end": {
          "line": 88,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3880,
      "end": 3881,
      "loc": {
        "start": {
          "line": 88,
          "column": 54
        },
        "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": "obj",
      "start": 3881,
      "end": 3884,
      "loc": {
        "start": {
          "line": 88,
          "column": 55
        },
        "end": {
          "line": 88,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3884,
      "end": 3885,
      "loc": {
        "start": {
          "line": 88,
          "column": 58
        },
        "end": {
          "line": 88,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3886,
      "end": 3889,
      "loc": {
        "start": {
          "line": 88,
          "column": 60
        },
        "end": {
          "line": 88,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3889,
      "end": 3890,
      "loc": {
        "start": {
          "line": 88,
          "column": 63
        },
        "end": {
          "line": 88,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3891,
      "end": 3893,
      "loc": {
        "start": {
          "line": 88,
          "column": 65
        },
        "end": {
          "line": 88,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 3894,
      "end": 3897,
      "loc": {
        "start": {
          "line": 88,
          "column": 68
        },
        "end": {
          "line": 88,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3897,
      "end": 3898,
      "loc": {
        "start": {
          "line": 88,
          "column": 71
        },
        "end": {
          "line": 88,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3898,
      "end": 3900,
      "loc": {
        "start": {
          "line": 88,
          "column": 72
        },
        "end": {
          "line": 88,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3901,
      "end": 3904,
      "loc": {
        "start": {
          "line": 88,
          "column": 75
        },
        "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": "constr1",
      "start": 3905,
      "end": 3912,
      "loc": {
        "start": {
          "line": 88,
          "column": 79
        },
        "end": {
          "line": 88,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3912,
      "end": 3913,
      "loc": {
        "start": {
          "line": 88,
          "column": 86
        },
        "end": {
          "line": 88,
          "column": 87
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "entities",
      "start": 3913,
      "end": 3921,
      "loc": {
        "start": {
          "line": 88,
          "column": 87
        },
        "end": {
          "line": 88,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3921,
      "end": 3922,
      "loc": {
        "start": {
          "line": 88,
          "column": 95
        },
        "end": {
          "line": 88,
          "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": 3922,
      "end": 3923,
      "loc": {
        "start": {
          "line": 88,
          "column": 96
        },
        "end": {
          "line": 88,
          "column": 97
        }
      }
    },
    {
      "type": {
        "label": "+/-",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": 9,
        "updateContext": null
      },
      "value": "-",
      "start": 3924,
      "end": 3925,
      "loc": {
        "start": {
          "line": 88,
          "column": 98
        },
        "end": {
          "line": 88,
          "column": 99
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "idx",
      "start": 3926,
      "end": 3929,
      "loc": {
        "start": {
          "line": 88,
          "column": 100
        },
        "end": {
          "line": 88,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3929,
      "end": 3930,
      "loc": {
        "start": {
          "line": 88,
          "column": 103
        },
        "end": {
          "line": 88,
          "column": 104
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3930,
      "end": 3931,
      "loc": {
        "start": {
          "line": 88,
          "column": 104
        },
        "end": {
          "line": 88,
          "column": 105
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 3931,
      "end": 3933,
      "loc": {
        "start": {
          "line": 88,
          "column": 105
        },
        "end": {
          "line": 88,
          "column": 107
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3933,
      "end": 3934,
      "loc": {
        "start": {
          "line": 88,
          "column": 107
        },
        "end": {
          "line": 88,
          "column": 108
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3934,
      "end": 3935,
      "loc": {
        "start": {
          "line": 88,
          "column": 108
        },
        "end": {
          "line": 88,
          "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": 3944,
      "end": 3950,
      "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": 3951,
      "end": 3955,
      "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": 3955,
      "end": 3956,
      "loc": {
        "start": {
          "line": 89,
          "column": 19
        },
        "end": {
          "line": 89,
          "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": 3961,
      "end": 3967,
      "loc": {
        "start": {
          "line": 90,
          "column": 4
        },
        "end": {
          "line": 90,
          "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": 3968,
      "end": 3973,
      "loc": {
        "start": {
          "line": 90,
          "column": 11
        },
        "end": {
          "line": 90,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3973,
      "end": 3974,
      "loc": {
        "start": {
          "line": 90,
          "column": 16
        },
        "end": {
          "line": 90,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3975,
      "end": 3976,
      "loc": {
        "start": {
          "line": 91,
          "column": 0
        },
        "end": {
          "line": 91,
          "column": 1
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Disjoint Set Union",
      "start": 3978,
      "end": 3999,
      "loc": {
        "start": {
          "line": 93,
          "column": 0
        },
        "end": {
          "line": 93,
          "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": 4000,
      "end": 4006,
      "loc": {
        "start": {
          "line": 94,
          "column": 0
        },
        "end": {
          "line": 94,
          "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": 4007,
      "end": 4012,
      "loc": {
        "start": {
          "line": 94,
          "column": 7
        },
        "end": {
          "line": 94,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DSU",
      "start": 4013,
      "end": 4016,
      "loc": {
        "start": {
          "line": 94,
          "column": 13
        },
        "end": {
          "line": 94,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4017,
      "end": 4018,
      "loc": {
        "start": {
          "line": 94,
          "column": 17
        },
        "end": {
          "line": 94,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "constructor",
      "start": 4023,
      "end": 4034,
      "loc": {
        "start": {
          "line": 95,
          "column": 4
        },
        "end": {
          "line": 95,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4034,
      "end": 4035,
      "loc": {
        "start": {
          "line": 95,
          "column": 15
        },
        "end": {
          "line": 95,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4035,
      "end": 4036,
      "loc": {
        "start": {
          "line": 95,
          "column": 16
        },
        "end": {
          "line": 95,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4037,
      "end": 4038,
      "loc": {
        "start": {
          "line": 95,
          "column": 18
        },
        "end": {
          "line": 95,
          "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": 4047,
      "end": 4051,
      "loc": {
        "start": {
          "line": 96,
          "column": 8
        },
        "end": {
          "line": 96,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4051,
      "end": 4052,
      "loc": {
        "start": {
          "line": 96,
          "column": 12
        },
        "end": {
          "line": 96,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4052,
      "end": 4059,
      "loc": {
        "start": {
          "line": 96,
          "column": 13
        },
        "end": {
          "line": 96,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4060,
      "end": 4061,
      "loc": {
        "start": {
          "line": 96,
          "column": 21
        },
        "end": {
          "line": 96,
          "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": 4062,
      "end": 4065,
      "loc": {
        "start": {
          "line": 96,
          "column": 23
        },
        "end": {
          "line": 96,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Map",
      "start": 4066,
      "end": 4069,
      "loc": {
        "start": {
          "line": 96,
          "column": 27
        },
        "end": {
          "line": 96,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4069,
      "end": 4070,
      "loc": {
        "start": {
          "line": 96,
          "column": 30
        },
        "end": {
          "line": 96,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4070,
      "end": 4071,
      "loc": {
        "start": {
          "line": 96,
          "column": 31
        },
        "end": {
          "line": 96,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4071,
      "end": 4072,
      "loc": {
        "start": {
          "line": 96,
          "column": 32
        },
        "end": {
          "line": 96,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4077,
      "end": 4078,
      "loc": {
        "start": {
          "line": 97,
          "column": 4
        },
        "end": {
          "line": 97,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getParent",
      "start": 4084,
      "end": 4093,
      "loc": {
        "start": {
          "line": 99,
          "column": 4
        },
        "end": {
          "line": 99,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4093,
      "end": 4094,
      "loc": {
        "start": {
          "line": 99,
          "column": 13
        },
        "end": {
          "line": 99,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4094,
      "end": 4097,
      "loc": {
        "start": {
          "line": 99,
          "column": 14
        },
        "end": {
          "line": 99,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4097,
      "end": 4098,
      "loc": {
        "start": {
          "line": 99,
          "column": 17
        },
        "end": {
          "line": 99,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4099,
      "end": 4100,
      "loc": {
        "start": {
          "line": 99,
          "column": 19
        },
        "end": {
          "line": 99,
          "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": 4109,
      "end": 4115,
      "loc": {
        "start": {
          "line": 100,
          "column": 8
        },
        "end": {
          "line": 100,
          "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": 4116,
      "end": 4120,
      "loc": {
        "start": {
          "line": 100,
          "column": 15
        },
        "end": {
          "line": 100,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4120,
      "end": 4121,
      "loc": {
        "start": {
          "line": 100,
          "column": 19
        },
        "end": {
          "line": 100,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4121,
      "end": 4128,
      "loc": {
        "start": {
          "line": 100,
          "column": 20
        },
        "end": {
          "line": 100,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4128,
      "end": 4129,
      "loc": {
        "start": {
          "line": 100,
          "column": 27
        },
        "end": {
          "line": 100,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 4129,
      "end": 4132,
      "loc": {
        "start": {
          "line": 100,
          "column": 28
        },
        "end": {
          "line": 100,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4132,
      "end": 4133,
      "loc": {
        "start": {
          "line": 100,
          "column": 31
        },
        "end": {
          "line": 100,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4133,
      "end": 4136,
      "loc": {
        "start": {
          "line": 100,
          "column": 32
        },
        "end": {
          "line": 100,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4136,
      "end": 4137,
      "loc": {
        "start": {
          "line": 100,
          "column": 35
        },
        "end": {
          "line": 100,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "?",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4138,
      "end": 4139,
      "loc": {
        "start": {
          "line": 100,
          "column": 37
        },
        "end": {
          "line": 100,
          "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": 4140,
      "end": 4144,
      "loc": {
        "start": {
          "line": 100,
          "column": 39
        },
        "end": {
          "line": 100,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4144,
      "end": 4145,
      "loc": {
        "start": {
          "line": 100,
          "column": 43
        },
        "end": {
          "line": 100,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4145,
      "end": 4152,
      "loc": {
        "start": {
          "line": 100,
          "column": 44
        },
        "end": {
          "line": 100,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4152,
      "end": 4153,
      "loc": {
        "start": {
          "line": 100,
          "column": 51
        },
        "end": {
          "line": 100,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "get",
      "start": 4153,
      "end": 4156,
      "loc": {
        "start": {
          "line": 100,
          "column": 52
        },
        "end": {
          "line": 100,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4156,
      "end": 4157,
      "loc": {
        "start": {
          "line": 100,
          "column": 55
        },
        "end": {
          "line": 100,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4157,
      "end": 4160,
      "loc": {
        "start": {
          "line": 100,
          "column": 56
        },
        "end": {
          "line": 100,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4160,
      "end": 4161,
      "loc": {
        "start": {
          "line": 100,
          "column": 59
        },
        "end": {
          "line": 100,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4162,
      "end": 4163,
      "loc": {
        "start": {
          "line": 100,
          "column": 61
        },
        "end": {
          "line": 100,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4164,
      "end": 4167,
      "loc": {
        "start": {
          "line": 100,
          "column": 63
        },
        "end": {
          "line": 100,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4167,
      "end": 4168,
      "loc": {
        "start": {
          "line": 100,
          "column": 66
        },
        "end": {
          "line": 100,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4173,
      "end": 4174,
      "loc": {
        "start": {
          "line": 101,
          "column": 4
        },
        "end": {
          "line": 101,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4180,
      "end": 4189,
      "loc": {
        "start": {
          "line": 103,
          "column": 4
        },
        "end": {
          "line": 103,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4189,
      "end": 4190,
      "loc": {
        "start": {
          "line": 103,
          "column": 13
        },
        "end": {
          "line": 103,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4190,
      "end": 4193,
      "loc": {
        "start": {
          "line": 103,
          "column": 14
        },
        "end": {
          "line": 103,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4193,
      "end": 4194,
      "loc": {
        "start": {
          "line": 103,
          "column": 17
        },
        "end": {
          "line": 103,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4195,
      "end": 4198,
      "loc": {
        "start": {
          "line": 103,
          "column": 19
        },
        "end": {
          "line": 103,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4198,
      "end": 4199,
      "loc": {
        "start": {
          "line": 103,
          "column": 22
        },
        "end": {
          "line": 103,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4200,
      "end": 4201,
      "loc": {
        "start": {
          "line": 103,
          "column": 24
        },
        "end": {
          "line": 103,
          "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": 4210,
      "end": 4214,
      "loc": {
        "start": {
          "line": 104,
          "column": 8
        },
        "end": {
          "line": 104,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4214,
      "end": 4215,
      "loc": {
        "start": {
          "line": 104,
          "column": 12
        },
        "end": {
          "line": 104,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4215,
      "end": 4222,
      "loc": {
        "start": {
          "line": 104,
          "column": 13
        },
        "end": {
          "line": 104,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4222,
      "end": 4223,
      "loc": {
        "start": {
          "line": 104,
          "column": 20
        },
        "end": {
          "line": 104,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "set",
      "start": 4223,
      "end": 4226,
      "loc": {
        "start": {
          "line": 104,
          "column": 21
        },
        "end": {
          "line": 104,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4226,
      "end": 4227,
      "loc": {
        "start": {
          "line": 104,
          "column": 24
        },
        "end": {
          "line": 104,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4227,
      "end": 4230,
      "loc": {
        "start": {
          "line": 104,
          "column": 25
        },
        "end": {
          "line": 104,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4230,
      "end": 4231,
      "loc": {
        "start": {
          "line": 104,
          "column": 28
        },
        "end": {
          "line": 104,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4232,
      "end": 4235,
      "loc": {
        "start": {
          "line": 104,
          "column": 30
        },
        "end": {
          "line": 104,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4235,
      "end": 4236,
      "loc": {
        "start": {
          "line": 104,
          "column": 33
        },
        "end": {
          "line": 104,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4236,
      "end": 4237,
      "loc": {
        "start": {
          "line": 104,
          "column": 34
        },
        "end": {
          "line": 104,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4242,
      "end": 4243,
      "loc": {
        "start": {
          "line": 105,
          "column": 4
        },
        "end": {
          "line": 105,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "touch",
      "start": 4249,
      "end": 4254,
      "loc": {
        "start": {
          "line": 107,
          "column": 4
        },
        "end": {
          "line": 107,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4254,
      "end": 4255,
      "loc": {
        "start": {
          "line": 107,
          "column": 9
        },
        "end": {
          "line": 107,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4255,
      "end": 4258,
      "loc": {
        "start": {
          "line": 107,
          "column": 10
        },
        "end": {
          "line": 107,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4258,
      "end": 4259,
      "loc": {
        "start": {
          "line": 107,
          "column": 13
        },
        "end": {
          "line": 107,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4260,
      "end": 4261,
      "loc": {
        "start": {
          "line": 107,
          "column": 15
        },
        "end": {
          "line": 107,
          "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": 4270,
      "end": 4272,
      "loc": {
        "start": {
          "line": 108,
          "column": 8
        },
        "end": {
          "line": 108,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4273,
      "end": 4274,
      "loc": {
        "start": {
          "line": 108,
          "column": 11
        },
        "end": {
          "line": 108,
          "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": 4274,
      "end": 4275,
      "loc": {
        "start": {
          "line": 108,
          "column": 12
        },
        "end": {
          "line": 108,
          "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": 4275,
      "end": 4279,
      "loc": {
        "start": {
          "line": 108,
          "column": 13
        },
        "end": {
          "line": 108,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4279,
      "end": 4280,
      "loc": {
        "start": {
          "line": 108,
          "column": 17
        },
        "end": {
          "line": 108,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4280,
      "end": 4287,
      "loc": {
        "start": {
          "line": 108,
          "column": 18
        },
        "end": {
          "line": 108,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4287,
      "end": 4288,
      "loc": {
        "start": {
          "line": 108,
          "column": 25
        },
        "end": {
          "line": 108,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "has",
      "start": 4288,
      "end": 4291,
      "loc": {
        "start": {
          "line": 108,
          "column": 26
        },
        "end": {
          "line": 108,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4291,
      "end": 4292,
      "loc": {
        "start": {
          "line": 108,
          "column": 29
        },
        "end": {
          "line": 108,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4292,
      "end": 4295,
      "loc": {
        "start": {
          "line": 108,
          "column": 30
        },
        "end": {
          "line": 108,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4295,
      "end": 4296,
      "loc": {
        "start": {
          "line": 108,
          "column": 33
        },
        "end": {
          "line": 108,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4296,
      "end": 4297,
      "loc": {
        "start": {
          "line": 108,
          "column": 34
        },
        "end": {
          "line": 108,
          "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": 4298,
      "end": 4302,
      "loc": {
        "start": {
          "line": 108,
          "column": 36
        },
        "end": {
          "line": 108,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4302,
      "end": 4303,
      "loc": {
        "start": {
          "line": 108,
          "column": 40
        },
        "end": {
          "line": 108,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4303,
      "end": 4310,
      "loc": {
        "start": {
          "line": 108,
          "column": 41
        },
        "end": {
          "line": 108,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4310,
      "end": 4311,
      "loc": {
        "start": {
          "line": 108,
          "column": 48
        },
        "end": {
          "line": 108,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "set",
      "start": 4311,
      "end": 4314,
      "loc": {
        "start": {
          "line": 108,
          "column": 49
        },
        "end": {
          "line": 108,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4314,
      "end": 4315,
      "loc": {
        "start": {
          "line": 108,
          "column": 52
        },
        "end": {
          "line": 108,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4315,
      "end": 4318,
      "loc": {
        "start": {
          "line": 108,
          "column": 53
        },
        "end": {
          "line": 108,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4318,
      "end": 4319,
      "loc": {
        "start": {
          "line": 108,
          "column": 56
        },
        "end": {
          "line": 108,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4320,
      "end": 4323,
      "loc": {
        "start": {
          "line": 108,
          "column": 58
        },
        "end": {
          "line": 108,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4323,
      "end": 4324,
      "loc": {
        "start": {
          "line": 108,
          "column": 61
        },
        "end": {
          "line": 108,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4324,
      "end": 4325,
      "loc": {
        "start": {
          "line": 108,
          "column": 62
        },
        "end": {
          "line": 108,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4330,
      "end": 4331,
      "loc": {
        "start": {
          "line": 109,
          "column": 4
        },
        "end": {
          "line": 109,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4337,
      "end": 4344,
      "loc": {
        "start": {
          "line": 111,
          "column": 4
        },
        "end": {
          "line": 111,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4344,
      "end": 4345,
      "loc": {
        "start": {
          "line": 111,
          "column": 11
        },
        "end": {
          "line": 111,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4345,
      "end": 4348,
      "loc": {
        "start": {
          "line": 111,
          "column": 12
        },
        "end": {
          "line": 111,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4348,
      "end": 4349,
      "loc": {
        "start": {
          "line": 111,
          "column": 15
        },
        "end": {
          "line": 111,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4350,
      "end": 4351,
      "loc": {
        "start": {
          "line": 111,
          "column": 17
        },
        "end": {
          "line": 111,
          "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": 4360,
      "end": 4365,
      "loc": {
        "start": {
          "line": 112,
          "column": 8
        },
        "end": {
          "line": 112,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4366,
      "end": 4369,
      "loc": {
        "start": {
          "line": 112,
          "column": 14
        },
        "end": {
          "line": 112,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4370,
      "end": 4371,
      "loc": {
        "start": {
          "line": 112,
          "column": 18
        },
        "end": {
          "line": 112,
          "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": 4372,
      "end": 4376,
      "loc": {
        "start": {
          "line": 112,
          "column": 20
        },
        "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": 4376,
      "end": 4377,
      "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": "getParent",
      "start": 4377,
      "end": 4386,
      "loc": {
        "start": {
          "line": 112,
          "column": 25
        },
        "end": {
          "line": 112,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4386,
      "end": 4387,
      "loc": {
        "start": {
          "line": 112,
          "column": 34
        },
        "end": {
          "line": 112,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4387,
      "end": 4390,
      "loc": {
        "start": {
          "line": 112,
          "column": 35
        },
        "end": {
          "line": 112,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4390,
      "end": 4391,
      "loc": {
        "start": {
          "line": 112,
          "column": 38
        },
        "end": {
          "line": 112,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4391,
      "end": 4392,
      "loc": {
        "start": {
          "line": 112,
          "column": 39
        },
        "end": {
          "line": 112,
          "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": 4401,
      "end": 4403,
      "loc": {
        "start": {
          "line": 113,
          "column": 8
        },
        "end": {
          "line": 113,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4404,
      "end": 4405,
      "loc": {
        "start": {
          "line": 113,
          "column": 11
        },
        "end": {
          "line": 113,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4405,
      "end": 4408,
      "loc": {
        "start": {
          "line": 113,
          "column": 12
        },
        "end": {
          "line": 113,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 4409,
      "end": 4412,
      "loc": {
        "start": {
          "line": 113,
          "column": 16
        },
        "end": {
          "line": 113,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4413,
      "end": 4416,
      "loc": {
        "start": {
          "line": 113,
          "column": 20
        },
        "end": {
          "line": 113,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4416,
      "end": 4417,
      "loc": {
        "start": {
          "line": 113,
          "column": 23
        },
        "end": {
          "line": 113,
          "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": 4418,
      "end": 4424,
      "loc": {
        "start": {
          "line": 113,
          "column": 25
        },
        "end": {
          "line": 113,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4425,
      "end": 4428,
      "loc": {
        "start": {
          "line": 113,
          "column": 32
        },
        "end": {
          "line": 113,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4428,
      "end": 4429,
      "loc": {
        "start": {
          "line": 113,
          "column": 35
        },
        "end": {
          "line": 113,
          "column": 36
        }
      }
    },
    {
      "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": 4438,
      "end": 4443,
      "loc": {
        "start": {
          "line": 114,
          "column": 8
        },
        "end": {
          "line": 114,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4444,
      "end": 4448,
      "loc": {
        "start": {
          "line": 114,
          "column": 14
        },
        "end": {
          "line": 114,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4449,
      "end": 4450,
      "loc": {
        "start": {
          "line": 114,
          "column": 19
        },
        "end": {
          "line": 114,
          "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": 4451,
      "end": 4455,
      "loc": {
        "start": {
          "line": 114,
          "column": 21
        },
        "end": {
          "line": 114,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4455,
      "end": 4456,
      "loc": {
        "start": {
          "line": 114,
          "column": 25
        },
        "end": {
          "line": 114,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4456,
      "end": 4463,
      "loc": {
        "start": {
          "line": 114,
          "column": 26
        },
        "end": {
          "line": 114,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4463,
      "end": 4464,
      "loc": {
        "start": {
          "line": 114,
          "column": 33
        },
        "end": {
          "line": 114,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "par",
      "start": 4464,
      "end": 4467,
      "loc": {
        "start": {
          "line": 114,
          "column": 34
        },
        "end": {
          "line": 114,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4467,
      "end": 4468,
      "loc": {
        "start": {
          "line": 114,
          "column": 37
        },
        "end": {
          "line": 114,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4468,
      "end": 4469,
      "loc": {
        "start": {
          "line": 114,
          "column": 38
        },
        "end": {
          "line": 114,
          "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": 4478,
      "end": 4482,
      "loc": {
        "start": {
          "line": 115,
          "column": 8
        },
        "end": {
          "line": 115,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4482,
      "end": 4483,
      "loc": {
        "start": {
          "line": 115,
          "column": 12
        },
        "end": {
          "line": 115,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4483,
      "end": 4492,
      "loc": {
        "start": {
          "line": 115,
          "column": 13
        },
        "end": {
          "line": 115,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4492,
      "end": 4493,
      "loc": {
        "start": {
          "line": 115,
          "column": 22
        },
        "end": {
          "line": 115,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "obj",
      "start": 4493,
      "end": 4496,
      "loc": {
        "start": {
          "line": 115,
          "column": 23
        },
        "end": {
          "line": 115,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4496,
      "end": 4497,
      "loc": {
        "start": {
          "line": 115,
          "column": 26
        },
        "end": {
          "line": 115,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4498,
      "end": 4502,
      "loc": {
        "start": {
          "line": 115,
          "column": 28
        },
        "end": {
          "line": 115,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4502,
      "end": 4503,
      "loc": {
        "start": {
          "line": 115,
          "column": 32
        },
        "end": {
          "line": 115,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4503,
      "end": 4504,
      "loc": {
        "start": {
          "line": 115,
          "column": 33
        },
        "end": {
          "line": 115,
          "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": 4513,
      "end": 4519,
      "loc": {
        "start": {
          "line": 116,
          "column": 8
        },
        "end": {
          "line": 116,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "head",
      "start": 4520,
      "end": 4524,
      "loc": {
        "start": {
          "line": 116,
          "column": 15
        },
        "end": {
          "line": 116,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4524,
      "end": 4525,
      "loc": {
        "start": {
          "line": 116,
          "column": 19
        },
        "end": {
          "line": 116,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4530,
      "end": 4531,
      "loc": {
        "start": {
          "line": 117,
          "column": 4
        },
        "end": {
          "line": 117,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "merge",
      "start": 4537,
      "end": 4542,
      "loc": {
        "start": {
          "line": 119,
          "column": 4
        },
        "end": {
          "line": 119,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4542,
      "end": 4543,
      "loc": {
        "start": {
          "line": 119,
          "column": 9
        },
        "end": {
          "line": 119,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4543,
      "end": 4547,
      "loc": {
        "start": {
          "line": 119,
          "column": 10
        },
        "end": {
          "line": 119,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4547,
      "end": 4548,
      "loc": {
        "start": {
          "line": 119,
          "column": 14
        },
        "end": {
          "line": 119,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4549,
      "end": 4553,
      "loc": {
        "start": {
          "line": 119,
          "column": 16
        },
        "end": {
          "line": 119,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4553,
      "end": 4554,
      "loc": {
        "start": {
          "line": 119,
          "column": 20
        },
        "end": {
          "line": 119,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4555,
      "end": 4556,
      "loc": {
        "start": {
          "line": 119,
          "column": 22
        },
        "end": {
          "line": 119,
          "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": 4565,
      "end": 4569,
      "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": 4569,
      "end": 4570,
      "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": "touch",
      "start": 4570,
      "end": 4575,
      "loc": {
        "start": {
          "line": 120,
          "column": 13
        },
        "end": {
          "line": 120,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4575,
      "end": 4576,
      "loc": {
        "start": {
          "line": 120,
          "column": 18
        },
        "end": {
          "line": 120,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4576,
      "end": 4580,
      "loc": {
        "start": {
          "line": 120,
          "column": 19
        },
        "end": {
          "line": 120,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4580,
      "end": 4581,
      "loc": {
        "start": {
          "line": 120,
          "column": 23
        },
        "end": {
          "line": 120,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4581,
      "end": 4582,
      "loc": {
        "start": {
          "line": 120,
          "column": 24
        },
        "end": {
          "line": 120,
          "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": 4591,
      "end": 4595,
      "loc": {
        "start": {
          "line": 121,
          "column": 8
        },
        "end": {
          "line": 121,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4595,
      "end": 4596,
      "loc": {
        "start": {
          "line": 121,
          "column": 12
        },
        "end": {
          "line": 121,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "touch",
      "start": 4596,
      "end": 4601,
      "loc": {
        "start": {
          "line": 121,
          "column": 13
        },
        "end": {
          "line": 121,
          "column": 18
        }
      }
    },
    {
      "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": 121,
          "column": 18
        },
        "end": {
          "line": 121,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4602,
      "end": 4606,
      "loc": {
        "start": {
          "line": 121,
          "column": 19
        },
        "end": {
          "line": 121,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4606,
      "end": 4607,
      "loc": {
        "start": {
          "line": 121,
          "column": 23
        },
        "end": {
          "line": 121,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4607,
      "end": 4608,
      "loc": {
        "start": {
          "line": 121,
          "column": 24
        },
        "end": {
          "line": 121,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4617,
      "end": 4621,
      "loc": {
        "start": {
          "line": 122,
          "column": 8
        },
        "end": {
          "line": 122,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4622,
      "end": 4623,
      "loc": {
        "start": {
          "line": 122,
          "column": 13
        },
        "end": {
          "line": 122,
          "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": 4624,
      "end": 4628,
      "loc": {
        "start": {
          "line": 122,
          "column": 15
        },
        "end": {
          "line": 122,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4628,
      "end": 4629,
      "loc": {
        "start": {
          "line": 122,
          "column": 19
        },
        "end": {
          "line": 122,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4629,
      "end": 4636,
      "loc": {
        "start": {
          "line": 122,
          "column": 20
        },
        "end": {
          "line": 122,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4636,
      "end": 4637,
      "loc": {
        "start": {
          "line": 122,
          "column": 27
        },
        "end": {
          "line": 122,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4637,
      "end": 4641,
      "loc": {
        "start": {
          "line": 122,
          "column": 28
        },
        "end": {
          "line": 122,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4641,
      "end": 4642,
      "loc": {
        "start": {
          "line": 122,
          "column": 32
        },
        "end": {
          "line": 122,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4642,
      "end": 4643,
      "loc": {
        "start": {
          "line": 122,
          "column": 33
        },
        "end": {
          "line": 122,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4652,
      "end": 4656,
      "loc": {
        "start": {
          "line": 123,
          "column": 8
        },
        "end": {
          "line": 123,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4657,
      "end": 4658,
      "loc": {
        "start": {
          "line": 123,
          "column": 13
        },
        "end": {
          "line": 123,
          "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": 4659,
      "end": 4663,
      "loc": {
        "start": {
          "line": 123,
          "column": 15
        },
        "end": {
          "line": 123,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4663,
      "end": 4664,
      "loc": {
        "start": {
          "line": 123,
          "column": 19
        },
        "end": {
          "line": 123,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHead",
      "start": 4664,
      "end": 4671,
      "loc": {
        "start": {
          "line": 123,
          "column": 20
        },
        "end": {
          "line": 123,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4671,
      "end": 4672,
      "loc": {
        "start": {
          "line": 123,
          "column": 27
        },
        "end": {
          "line": 123,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4672,
      "end": 4676,
      "loc": {
        "start": {
          "line": 123,
          "column": 28
        },
        "end": {
          "line": 123,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4676,
      "end": 4677,
      "loc": {
        "start": {
          "line": 123,
          "column": 32
        },
        "end": {
          "line": 123,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4677,
      "end": 4678,
      "loc": {
        "start": {
          "line": 123,
          "column": 33
        },
        "end": {
          "line": 123,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Math",
      "start": 4687,
      "end": 4691,
      "loc": {
        "start": {
          "line": 124,
          "column": 8
        },
        "end": {
          "line": 124,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4691,
      "end": 4692,
      "loc": {
        "start": {
          "line": 124,
          "column": 12
        },
        "end": {
          "line": 124,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "random",
      "start": 4692,
      "end": 4698,
      "loc": {
        "start": {
          "line": 124,
          "column": 13
        },
        "end": {
          "line": 124,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4698,
      "end": 4699,
      "loc": {
        "start": {
          "line": 124,
          "column": 19
        },
        "end": {
          "line": 124,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4699,
      "end": 4700,
      "loc": {
        "start": {
          "line": 124,
          "column": 20
        },
        "end": {
          "line": 124,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<",
      "start": 4701,
      "end": 4702,
      "loc": {
        "start": {
          "line": 124,
          "column": 22
        },
        "end": {
          "line": 124,
          "column": 23
        }
      }
    },
    {
      "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": 4703,
      "end": 4706,
      "loc": {
        "start": {
          "line": 124,
          "column": 24
        },
        "end": {
          "line": 124,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "?",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4707,
      "end": 4708,
      "loc": {
        "start": {
          "line": 124,
          "column": 28
        },
        "end": {
          "line": 124,
          "column": 29
        }
      }
    },
    {
      "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": 4709,
      "end": 4713,
      "loc": {
        "start": {
          "line": 124,
          "column": 30
        },
        "end": {
          "line": 124,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4713,
      "end": 4714,
      "loc": {
        "start": {
          "line": 124,
          "column": 34
        },
        "end": {
          "line": 124,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4714,
      "end": 4723,
      "loc": {
        "start": {
          "line": 124,
          "column": 35
        },
        "end": {
          "line": 124,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4723,
      "end": 4724,
      "loc": {
        "start": {
          "line": 124,
          "column": 44
        },
        "end": {
          "line": 124,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4724,
      "end": 4728,
      "loc": {
        "start": {
          "line": 124,
          "column": 45
        },
        "end": {
          "line": 124,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4728,
      "end": 4729,
      "loc": {
        "start": {
          "line": 124,
          "column": 49
        },
        "end": {
          "line": 124,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4730,
      "end": 4734,
      "loc": {
        "start": {
          "line": 124,
          "column": 51
        },
        "end": {
          "line": 124,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4734,
      "end": 4735,
      "loc": {
        "start": {
          "line": 124,
          "column": 55
        },
        "end": {
          "line": 124,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4736,
      "end": 4737,
      "loc": {
        "start": {
          "line": 124,
          "column": 57
        },
        "end": {
          "line": 124,
          "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": 4738,
      "end": 4742,
      "loc": {
        "start": {
          "line": 124,
          "column": 59
        },
        "end": {
          "line": 124,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4742,
      "end": 4743,
      "loc": {
        "start": {
          "line": 124,
          "column": 63
        },
        "end": {
          "line": 124,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setParent",
      "start": 4743,
      "end": 4752,
      "loc": {
        "start": {
          "line": 124,
          "column": 64
        },
        "end": {
          "line": 124,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4752,
      "end": 4753,
      "loc": {
        "start": {
          "line": 124,
          "column": 73
        },
        "end": {
          "line": 124,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objB",
      "start": 4753,
      "end": 4757,
      "loc": {
        "start": {
          "line": 124,
          "column": 74
        },
        "end": {
          "line": 124,
          "column": 78
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4757,
      "end": 4758,
      "loc": {
        "start": {
          "line": 124,
          "column": 78
        },
        "end": {
          "line": 124,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "objA",
      "start": 4759,
      "end": 4763,
      "loc": {
        "start": {
          "line": 124,
          "column": 80
        },
        "end": {
          "line": 124,
          "column": 84
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4763,
      "end": 4764,
      "loc": {
        "start": {
          "line": 124,
          "column": 84
        },
        "end": {
          "line": 124,
          "column": 85
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4764,
      "end": 4765,
      "loc": {
        "start": {
          "line": 124,
          "column": 85
        },
        "end": {
          "line": 124,
          "column": 86
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4770,
      "end": 4771,
      "loc": {
        "start": {
          "line": 125,
          "column": 4
        },
        "end": {
          "line": 125,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getTouched",
      "start": 4777,
      "end": 4787,
      "loc": {
        "start": {
          "line": 127,
          "column": 4
        },
        "end": {
          "line": 127,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4787,
      "end": 4788,
      "loc": {
        "start": {
          "line": 127,
          "column": 14
        },
        "end": {
          "line": 127,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4788,
      "end": 4789,
      "loc": {
        "start": {
          "line": 127,
          "column": 15
        },
        "end": {
          "line": 127,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4790,
      "end": 4791,
      "loc": {
        "start": {
          "line": 127,
          "column": 17
        },
        "end": {
          "line": 127,
          "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": 4800,
      "end": 4806,
      "loc": {
        "start": {
          "line": 128,
          "column": 8
        },
        "end": {
          "line": 128,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Array",
      "start": 4807,
      "end": 4812,
      "loc": {
        "start": {
          "line": 128,
          "column": 15
        },
        "end": {
          "line": 128,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4812,
      "end": 4813,
      "loc": {
        "start": {
          "line": 128,
          "column": 20
        },
        "end": {
          "line": 128,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 4813,
      "end": 4817,
      "loc": {
        "start": {
          "line": 128,
          "column": 21
        },
        "end": {
          "line": 128,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4817,
      "end": 4818,
      "loc": {
        "start": {
          "line": 128,
          "column": 25
        },
        "end": {
          "line": 128,
          "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": 4818,
      "end": 4822,
      "loc": {
        "start": {
          "line": 128,
          "column": 26
        },
        "end": {
          "line": 128,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4822,
      "end": 4823,
      "loc": {
        "start": {
          "line": 128,
          "column": 30
        },
        "end": {
          "line": 128,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "parents",
      "start": 4823,
      "end": 4830,
      "loc": {
        "start": {
          "line": 128,
          "column": 31
        },
        "end": {
          "line": 128,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4830,
      "end": 4831,
      "loc": {
        "start": {
          "line": 128,
          "column": 38
        },
        "end": {
          "line": 128,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "keys",
      "start": 4831,
      "end": 4835,
      "loc": {
        "start": {
          "line": 128,
          "column": 39
        },
        "end": {
          "line": 128,
          "column": 43
        }
      }
    },
    {
      "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": 128,
          "column": 43
        },
        "end": {
          "line": 128,
          "column": 44
        }
      }
    },
    {
      "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": 128,
          "column": 44
        },
        "end": {
          "line": 128,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4837,
      "end": 4838,
      "loc": {
        "start": {
          "line": 128,
          "column": 45
        },
        "end": {
          "line": 128,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4838,
      "end": 4839,
      "loc": {
        "start": {
          "line": 128,
          "column": 46
        },
        "end": {
          "line": 128,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4844,
      "end": 4845,
      "loc": {
        "start": {
          "line": 129,
          "column": 4
        },
        "end": {
          "line": 129,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4846,
      "end": 4847,
      "loc": {
        "start": {
          "line": 130,
          "column": 0
        },
        "end": {
          "line": 130,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4848,
      "end": 4848,
      "loc": {
        "start": {
          "line": 131,
          "column": 0
        },
        "end": {
          "line": 131,
          "column": 0
        }
      }
    }
  ]
}