{
  "type": "Program",
  "start": 0,
  "end": 9259,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 231,
      "column": 0
    }
  },
  "sourceType": "module",
  "body": [
    {
      "type": "ImportDeclaration",
      "start": 0,
      "end": 48,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 48
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 7,
          "end": 17,
          "loc": {
            "start": {
              "line": 1,
              "column": 7
            },
            "end": {
              "line": 1,
              "column": 17
            }
          },
          "local": {
            "type": "Identifier",
            "start": 7,
            "end": 17,
            "loc": {
              "start": {
                "line": 1,
                "column": 7
              },
              "end": {
                "line": 1,
                "column": 17
              }
            },
            "name": "Constraint"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 23,
        "end": 47,
        "loc": {
          "start": {
            "line": 1,
            "column": 23
          },
          "end": {
            "line": 1,
            "column": 47
          }
        },
        "value": "../sketcher/constraint",
        "rawValue": "../sketcher/constraint",
        "raw": "'../sketcher/constraint'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 50,
      "end": 90,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 40
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 57,
          "end": 63,
          "loc": {
            "start": {
              "line": 2,
              "column": 7
            },
            "end": {
              "line": 2,
              "column": 13
            }
          },
          "local": {
            "type": "Identifier",
            "start": 57,
            "end": 63,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 13
              }
            },
            "name": "Sketch"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 69,
        "end": 89,
        "loc": {
          "start": {
            "line": 2,
            "column": 19
          },
          "end": {
            "line": 2,
            "column": 39
          }
        },
        "value": "../sketcher/sketch",
        "rawValue": "../sketcher/sketch",
        "raw": "'../sketcher/sketch'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 92,
      "end": 161,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 69
        }
      },
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "start": 100,
          "end": 115,
          "loc": {
            "start": {
              "line": 3,
              "column": 8
            },
            "end": {
              "line": 3,
              "column": 23
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 100,
            "end": 115,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          },
          "local": {
            "type": "Identifier",
            "start": 100,
            "end": 115,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 117,
          "end": 122,
          "loc": {
            "start": {
              "line": 3,
              "column": 25
            },
            "end": {
              "line": 3,
              "column": 30
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 117,
            "end": 122,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          },
          "local": {
            "type": "Identifier",
            "start": 117,
            "end": 122,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 124,
          "end": 128,
          "loc": {
            "start": {
              "line": 3,
              "column": 32
            },
            "end": {
              "line": 3,
              "column": 36
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 124,
            "end": 128,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          },
          "local": {
            "type": "Identifier",
            "start": 124,
            "end": 128,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 135,
        "end": 160,
        "loc": {
          "start": {
            "line": 3,
            "column": 43
          },
          "end": {
            "line": 3,
            "column": 68
          }
        },
        "value": "../sketcher/geomobjects",
        "rawValue": "../sketcher/geomobjects",
        "raw": "'../sketcher/geomobjects'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 163,
      "end": 189,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 26
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 170,
          "end": 175,
          "loc": {
            "start": {
              "line": 4,
              "column": 7
            },
            "end": {
              "line": 4,
              "column": 12
            }
          },
          "local": {
            "type": "Identifier",
            "start": 170,
            "end": 175,
            "loc": {
              "start": {
                "line": 4,
                "column": 7
              },
              "end": {
                "line": 4,
                "column": 12
              }
            },
            "name": "THREE"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 181,
        "end": 188,
        "loc": {
          "start": {
            "line": 4,
            "column": 18
          },
          "end": {
            "line": 4,
            "column": 25
          }
        },
        "value": "three",
        "rawValue": "three",
        "raw": "'three'"
      },
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Disjoint Set Union ========================",
          "start": 193,
          "end": 261,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            193,
            261
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 263,
      "end": 1201,
      "loc": {
        "start": {
          "line": 7,
          "column": 0
        },
        "end": {
          "line": 48,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 270,
        "end": 1201,
        "loc": {
          "start": {
            "line": 7,
            "column": 7
          },
          "end": {
            "line": 48,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 276,
          "end": 279,
          "loc": {
            "start": {
              "line": 7,
              "column": 13
            },
            "end": {
              "line": 7,
              "column": 16
            }
          },
          "name": "DSU",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 280,
          "end": 1201,
          "loc": {
            "start": {
              "line": 7,
              "column": 17
            },
            "end": {
              "line": 48,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 287,
              "end": 344,
              "loc": {
                "start": {
                  "line": 8,
                  "column": 4
                },
                "end": {
                  "line": 10,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 287,
                "end": 298,
                "loc": {
                  "start": {
                    "line": 8,
                    "column": 4
                  },
                  "end": {
                    "line": 8,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 298,
                "end": 344,
                "loc": {
                  "start": {
                    "line": 8,
                    "column": 15
                  },
                  "end": {
                    "line": 10,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 301,
                  "end": 344,
                  "loc": {
                    "start": {
                      "line": 8,
                      "column": 18
                    },
                    "end": {
                      "line": 10,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 312,
                      "end": 337,
                      "loc": {
                        "start": {
                          "line": 9,
                          "column": 8
                        },
                        "end": {
                          "line": 9,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 312,
                        "end": 336,
                        "loc": {
                          "start": {
                            "line": 9,
                            "column": 8
                          },
                          "end": {
                            "line": 9,
                            "column": 32
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 312,
                          "end": 324,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 312,
                            "end": 316,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 8
                              },
                              "end": {
                                "line": 9,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 317,
                            "end": 324,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 13
                              },
                              "end": {
                                "line": 9,
                                "column": 20
                              }
                            },
                            "name": "parents"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 327,
                          "end": 336,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 23
                            },
                            "end": {
                              "line": 9,
                              "column": 32
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 331,
                            "end": 334,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 27
                              },
                              "end": {
                                "line": 9,
                                "column": 30
                              }
                            },
                            "name": "Map"
                          },
                          "arguments": []
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 352,
              "end": 421,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 4
                },
                "end": {
                  "line": 14,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 352,
                "end": 361,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 4
                  },
                  "end": {
                    "line": 12,
                    "column": 13
                  }
                },
                "name": "getParent"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 361,
                "end": 421,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 13
                  },
                  "end": {
                    "line": 14,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 362,
                    "end": 365,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 14
                      },
                      "end": {
                        "line": 12,
                        "column": 17
                      }
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 367,
                  "end": 421,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 19
                    },
                    "end": {
                      "line": 14,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 378,
                      "end": 414,
                      "loc": {
                        "start": {
                          "line": 13,
                          "column": 8
                        },
                        "end": {
                          "line": 13,
                          "column": 44
                        }
                      },
                      "argument": {
                        "type": "LogicalExpression",
                        "start": 385,
                        "end": 413,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 15
                          },
                          "end": {
                            "line": 13,
                            "column": 43
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 385,
                          "end": 406,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 15
                            },
                            "end": {
                              "line": 13,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 385,
                            "end": 401,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 15
                              },
                              "end": {
                                "line": 13,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 385,
                              "end": 397,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 15
                                },
                                "end": {
                                  "line": 13,
                                  "column": 27
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 385,
                                "end": 389,
                                "loc": {
                                  "start": {
                                    "line": 13,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 13,
                                    "column": 19
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 390,
                                "end": 397,
                                "loc": {
                                  "start": {
                                    "line": 13,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 13,
                                    "column": 27
                                  }
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 398,
                              "end": 401,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 28
                                },
                                "end": {
                                  "line": 13,
                                  "column": 31
                                }
                              },
                              "name": "get"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 402,
                              "end": 405,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 32
                                },
                                "end": {
                                  "line": 13,
                                  "column": 35
                                }
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "operator": "||",
                        "right": {
                          "type": "Identifier",
                          "start": 410,
                          "end": 413,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 40
                            },
                            "end": {
                              "line": 13,
                              "column": 43
                            }
                          },
                          "name": "obj"
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 429,
              "end": 494,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 4
                },
                "end": {
                  "line": 18,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 429,
                "end": 438,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 4
                  },
                  "end": {
                    "line": 16,
                    "column": 13
                  }
                },
                "name": "setParent"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 438,
                "end": 494,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 13
                  },
                  "end": {
                    "line": 18,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 439,
                    "end": 442,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 14
                      },
                      "end": {
                        "line": 16,
                        "column": 17
                      }
                    },
                    "name": "obj"
                  },
                  {
                    "type": "Identifier",
                    "start": 444,
                    "end": 447,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 19
                      },
                      "end": {
                        "line": 16,
                        "column": 22
                      }
                    },
                    "name": "par"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 449,
                  "end": 494,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 24
                    },
                    "end": {
                      "line": 18,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 460,
                      "end": 487,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 8
                        },
                        "end": {
                          "line": 17,
                          "column": 35
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 460,
                        "end": 486,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 8
                          },
                          "end": {
                            "line": 17,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 460,
                          "end": 476,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 8
                            },
                            "end": {
                              "line": 17,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 460,
                            "end": 472,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 8
                              },
                              "end": {
                                "line": 17,
                                "column": 20
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 460,
                              "end": 464,
                              "loc": {
                                "start": {
                                  "line": 17,
                                  "column": 8
                                },
                                "end": {
                                  "line": 17,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 465,
                              "end": 472,
                              "loc": {
                                "start": {
                                  "line": 17,
                                  "column": 13
                                },
                                "end": {
                                  "line": 17,
                                  "column": 20
                                }
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 473,
                            "end": 476,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 21
                              },
                              "end": {
                                "line": 17,
                                "column": 24
                              }
                            },
                            "name": "set"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 477,
                            "end": 480,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 25
                              },
                              "end": {
                                "line": 17,
                                "column": 28
                              }
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 482,
                            "end": 485,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 30
                              },
                              "end": {
                                "line": 17,
                                "column": 33
                              }
                            },
                            "name": "par"
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 502,
              "end": 599,
              "loc": {
                "start": {
                  "line": 20,
                  "column": 4
                },
                "end": {
                  "line": 23,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 502,
                "end": 507,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 4
                  },
                  "end": {
                    "line": 20,
                    "column": 9
                  }
                },
                "name": "touch"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 507,
                "end": 599,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 9
                  },
                  "end": {
                    "line": 23,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 508,
                    "end": 511,
                    "loc": {
                      "start": {
                        "line": 20,
                        "column": 10
                      },
                      "end": {
                        "line": 20,
                        "column": 13
                      }
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 513,
                  "end": 599,
                  "loc": {
                    "start": {
                      "line": 20,
                      "column": 15
                    },
                    "end": {
                      "line": 23,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 524,
                      "end": 592,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 8
                        },
                        "end": {
                          "line": 22,
                          "column": 39
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 528,
                        "end": 550,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 12
                          },
                          "end": {
                            "line": 21,
                            "column": 34
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "CallExpression",
                          "start": 529,
                          "end": 550,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 13
                            },
                            "end": {
                              "line": 21,
                              "column": 34
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 529,
                            "end": 545,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 13
                              },
                              "end": {
                                "line": 21,
                                "column": 29
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 529,
                              "end": 541,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 13
                                },
                                "end": {
                                  "line": 21,
                                  "column": 25
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 529,
                                "end": 533,
                                "loc": {
                                  "start": {
                                    "line": 21,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 21,
                                    "column": 17
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 534,
                                "end": 541,
                                "loc": {
                                  "start": {
                                    "line": 21,
                                    "column": 18
                                  },
                                  "end": {
                                    "line": 21,
                                    "column": 25
                                  }
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 542,
                              "end": 545,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 26
                                },
                                "end": {
                                  "line": 21,
                                  "column": 29
                                }
                              },
                              "name": "has"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 546,
                              "end": 549,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 30
                                },
                                "end": {
                                  "line": 21,
                                  "column": 33
                                }
                              },
                              "name": "obj"
                            }
                          ]
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 565,
                        "end": 592,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 12
                          },
                          "end": {
                            "line": 22,
                            "column": 39
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 565,
                          "end": 591,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 12
                            },
                            "end": {
                              "line": 22,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 565,
                            "end": 581,
                            "loc": {
                              "start": {
                                "line": 22,
                                "column": 12
                              },
                              "end": {
                                "line": 22,
                                "column": 28
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 565,
                              "end": 577,
                              "loc": {
                                "start": {
                                  "line": 22,
                                  "column": 12
                                },
                                "end": {
                                  "line": 22,
                                  "column": 24
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 565,
                                "end": 569,
                                "loc": {
                                  "start": {
                                    "line": 22,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 22,
                                    "column": 16
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 570,
                                "end": 577,
                                "loc": {
                                  "start": {
                                    "line": 22,
                                    "column": 17
                                  },
                                  "end": {
                                    "line": 22,
                                    "column": 24
                                  }
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 578,
                              "end": 581,
                              "loc": {
                                "start": {
                                  "line": 22,
                                  "column": 25
                                },
                                "end": {
                                  "line": 22,
                                  "column": 28
                                }
                              },
                              "name": "set"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 582,
                              "end": 585,
                              "loc": {
                                "start": {
                                  "line": 22,
                                  "column": 29
                                },
                                "end": {
                                  "line": 22,
                                  "column": 32
                                }
                              },
                              "name": "obj"
                            },
                            {
                              "type": "Identifier",
                              "start": 587,
                              "end": 590,
                              "loc": {
                                "start": {
                                  "line": 22,
                                  "column": 34
                                },
                                "end": {
                                  "line": 22,
                                  "column": 37
                                }
                              },
                              "name": "obj"
                            }
                          ]
                        }
                      },
                      "alternate": null
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 607,
              "end": 816,
              "loc": {
                "start": {
                  "line": 25,
                  "column": 4
                },
                "end": {
                  "line": 32,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 607,
                "end": 614,
                "loc": {
                  "start": {
                    "line": 25,
                    "column": 4
                  },
                  "end": {
                    "line": 25,
                    "column": 11
                  }
                },
                "name": "getHead"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 614,
                "end": 816,
                "loc": {
                  "start": {
                    "line": 25,
                    "column": 11
                  },
                  "end": {
                    "line": 32,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 615,
                    "end": 618,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 12
                      },
                      "end": {
                        "line": 25,
                        "column": 15
                      }
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 620,
                  "end": 816,
                  "loc": {
                    "start": {
                      "line": 25,
                      "column": 17
                    },
                    "end": {
                      "line": 32,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 631,
                      "end": 661,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 8
                        },
                        "end": {
                          "line": 26,
                          "column": 38
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 635,
                          "end": 660,
                          "loc": {
                            "start": {
                              "line": 26,
                              "column": 12
                            },
                            "end": {
                              "line": 26,
                              "column": 37
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 635,
                            "end": 638,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 12
                              },
                              "end": {
                                "line": 26,
                                "column": 15
                              }
                            },
                            "name": "par"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 641,
                            "end": 660,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 18
                              },
                              "end": {
                                "line": 26,
                                "column": 37
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 641,
                              "end": 655,
                              "loc": {
                                "start": {
                                  "line": 26,
                                  "column": 18
                                },
                                "end": {
                                  "line": 26,
                                  "column": 32
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 641,
                                "end": 645,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 18
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 22
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 646,
                                "end": 655,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 32
                                  }
                                },
                                "name": "getParent"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 656,
                                "end": 659,
                                "loc": {
                                  "start": {
                                    "line": 26,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 26,
                                    "column": 36
                                  }
                                },
                                "name": "obj"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "IfStatement",
                      "start": 671,
                      "end": 712,
                      "loc": {
                        "start": {
                          "line": 27,
                          "column": 8
                        },
                        "end": {
                          "line": 28,
                          "column": 23
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 675,
                        "end": 686,
                        "loc": {
                          "start": {
                            "line": 27,
                            "column": 12
                          },
                          "end": {
                            "line": 27,
                            "column": 23
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 675,
                          "end": 678,
                          "loc": {
                            "start": {
                              "line": 27,
                              "column": 12
                            },
                            "end": {
                              "line": 27,
                              "column": 15
                            }
                          },
                          "name": "par"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 683,
                          "end": 686,
                          "loc": {
                            "start": {
                              "line": 27,
                              "column": 20
                            },
                            "end": {
                              "line": 27,
                              "column": 23
                            }
                          },
                          "name": "obj"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 701,
                        "end": 712,
                        "loc": {
                          "start": {
                            "line": 28,
                            "column": 12
                          },
                          "end": {
                            "line": 28,
                            "column": 23
                          }
                        },
                        "argument": {
                          "type": "Identifier",
                          "start": 708,
                          "end": 711,
                          "loc": {
                            "start": {
                              "line": 28,
                              "column": 19
                            },
                            "end": {
                              "line": 28,
                              "column": 22
                            }
                          },
                          "name": "obj"
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 722,
                      "end": 751,
                      "loc": {
                        "start": {
                          "line": 29,
                          "column": 8
                        },
                        "end": {
                          "line": 29,
                          "column": 37
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 726,
                          "end": 750,
                          "loc": {
                            "start": {
                              "line": 29,
                              "column": 12
                            },
                            "end": {
                              "line": 29,
                              "column": 36
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 726,
                            "end": 730,
                            "loc": {
                              "start": {
                                "line": 29,
                                "column": 12
                              },
                              "end": {
                                "line": 29,
                                "column": 16
                              }
                            },
                            "name": "head"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 733,
                            "end": 750,
                            "loc": {
                              "start": {
                                "line": 29,
                                "column": 19
                              },
                              "end": {
                                "line": 29,
                                "column": 36
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 733,
                              "end": 745,
                              "loc": {
                                "start": {
                                  "line": 29,
                                  "column": 19
                                },
                                "end": {
                                  "line": 29,
                                  "column": 31
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 733,
                                "end": 737,
                                "loc": {
                                  "start": {
                                    "line": 29,
                                    "column": 19
                                  },
                                  "end": {
                                    "line": 29,
                                    "column": 23
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 738,
                                "end": 745,
                                "loc": {
                                  "start": {
                                    "line": 29,
                                    "column": 24
                                  },
                                  "end": {
                                    "line": 29,
                                    "column": 31
                                  }
                                },
                                "name": "getHead"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 746,
                                "end": 749,
                                "loc": {
                                  "start": {
                                    "line": 29,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 29,
                                    "column": 35
                                  }
                                },
                                "name": "par"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 761,
                      "end": 787,
                      "loc": {
                        "start": {
                          "line": 30,
                          "column": 8
                        },
                        "end": {
                          "line": 30,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 761,
                        "end": 786,
                        "loc": {
                          "start": {
                            "line": 30,
                            "column": 8
                          },
                          "end": {
                            "line": 30,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 761,
                          "end": 775,
                          "loc": {
                            "start": {
                              "line": 30,
                              "column": 8
                            },
                            "end": {
                              "line": 30,
                              "column": 22
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 761,
                            "end": 765,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 8
                              },
                              "end": {
                                "line": 30,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 766,
                            "end": 775,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 13
                              },
                              "end": {
                                "line": 30,
                                "column": 22
                              }
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 776,
                            "end": 779,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 23
                              },
                              "end": {
                                "line": 30,
                                "column": 26
                              }
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 781,
                            "end": 785,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 28
                              },
                              "end": {
                                "line": 30,
                                "column": 32
                              }
                            },
                            "name": "head"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 797,
                      "end": 809,
                      "loc": {
                        "start": {
                          "line": 31,
                          "column": 8
                        },
                        "end": {
                          "line": 31,
                          "column": 20
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 804,
                        "end": 808,
                        "loc": {
                          "start": {
                            "line": 31,
                            "column": 15
                          },
                          "end": {
                            "line": 31,
                            "column": 19
                          }
                        },
                        "name": "head"
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 824,
              "end": 1120,
              "loc": {
                "start": {
                  "line": 34,
                  "column": 4
                },
                "end": {
                  "line": 43,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 824,
                "end": 829,
                "loc": {
                  "start": {
                    "line": 34,
                    "column": 4
                  },
                  "end": {
                    "line": 34,
                    "column": 9
                  }
                },
                "name": "merge"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 829,
                "end": 1120,
                "loc": {
                  "start": {
                    "line": 34,
                    "column": 9
                  },
                  "end": {
                    "line": 43,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 830,
                    "end": 834,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 10
                      },
                      "end": {
                        "line": 34,
                        "column": 14
                      }
                    },
                    "name": "objA"
                  },
                  {
                    "type": "Identifier",
                    "start": 836,
                    "end": 840,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 16
                      },
                      "end": {
                        "line": 34,
                        "column": 20
                      }
                    },
                    "name": "objB"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 842,
                  "end": 1120,
                  "loc": {
                    "start": {
                      "line": 34,
                      "column": 22
                    },
                    "end": {
                      "line": 43,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 853,
                      "end": 870,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 8
                        },
                        "end": {
                          "line": 35,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 853,
                        "end": 869,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 8
                          },
                          "end": {
                            "line": 35,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 853,
                          "end": 863,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 8
                            },
                            "end": {
                              "line": 35,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 853,
                            "end": 857,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 8
                              },
                              "end": {
                                "line": 35,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 858,
                            "end": 863,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 13
                              },
                              "end": {
                                "line": 35,
                                "column": 18
                              }
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 864,
                            "end": 868,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 19
                              },
                              "end": {
                                "line": 35,
                                "column": 23
                              }
                            },
                            "name": "objA"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 880,
                      "end": 897,
                      "loc": {
                        "start": {
                          "line": 36,
                          "column": 8
                        },
                        "end": {
                          "line": 36,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 880,
                        "end": 896,
                        "loc": {
                          "start": {
                            "line": 36,
                            "column": 8
                          },
                          "end": {
                            "line": 36,
                            "column": 24
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 880,
                          "end": 890,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 8
                            },
                            "end": {
                              "line": 36,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 880,
                            "end": 884,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 8
                              },
                              "end": {
                                "line": 36,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 885,
                            "end": 890,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 13
                              },
                              "end": {
                                "line": 36,
                                "column": 18
                              }
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 891,
                            "end": 895,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 19
                              },
                              "end": {
                                "line": 36,
                                "column": 23
                              }
                            },
                            "name": "objB"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 907,
                      "end": 933,
                      "loc": {
                        "start": {
                          "line": 37,
                          "column": 8
                        },
                        "end": {
                          "line": 37,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 907,
                        "end": 932,
                        "loc": {
                          "start": {
                            "line": 37,
                            "column": 8
                          },
                          "end": {
                            "line": 37,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 907,
                          "end": 911,
                          "loc": {
                            "start": {
                              "line": 37,
                              "column": 8
                            },
                            "end": {
                              "line": 37,
                              "column": 12
                            }
                          },
                          "name": "objA"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 914,
                          "end": 932,
                          "loc": {
                            "start": {
                              "line": 37,
                              "column": 15
                            },
                            "end": {
                              "line": 37,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 914,
                            "end": 926,
                            "loc": {
                              "start": {
                                "line": 37,
                                "column": 15
                              },
                              "end": {
                                "line": 37,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 914,
                              "end": 918,
                              "loc": {
                                "start": {
                                  "line": 37,
                                  "column": 15
                                },
                                "end": {
                                  "line": 37,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 919,
                              "end": 926,
                              "loc": {
                                "start": {
                                  "line": 37,
                                  "column": 20
                                },
                                "end": {
                                  "line": 37,
                                  "column": 27
                                }
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 927,
                              "end": 931,
                              "loc": {
                                "start": {
                                  "line": 37,
                                  "column": 28
                                },
                                "end": {
                                  "line": 37,
                                  "column": 32
                                }
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 943,
                      "end": 969,
                      "loc": {
                        "start": {
                          "line": 38,
                          "column": 8
                        },
                        "end": {
                          "line": 38,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 943,
                        "end": 968,
                        "loc": {
                          "start": {
                            "line": 38,
                            "column": 8
                          },
                          "end": {
                            "line": 38,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 943,
                          "end": 947,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 8
                            },
                            "end": {
                              "line": 38,
                              "column": 12
                            }
                          },
                          "name": "objB"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 950,
                          "end": 968,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 15
                            },
                            "end": {
                              "line": 38,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 950,
                            "end": 962,
                            "loc": {
                              "start": {
                                "line": 38,
                                "column": 15
                              },
                              "end": {
                                "line": 38,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 950,
                              "end": 954,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 15
                                },
                                "end": {
                                  "line": 38,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 955,
                              "end": 962,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 20
                                },
                                "end": {
                                  "line": 38,
                                  "column": 27
                                }
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 963,
                              "end": 967,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 28
                                },
                                "end": {
                                  "line": 38,
                                  "column": 32
                                }
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "IfStatement",
                      "start": 979,
                      "end": 1113,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 8
                        },
                        "end": {
                          "line": 42,
                          "column": 46
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 983,
                        "end": 1002,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 12
                          },
                          "end": {
                            "line": 39,
                            "column": 31
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 983,
                          "end": 996,
                          "loc": {
                            "start": {
                              "line": 39,
                              "column": 12
                            },
                            "end": {
                              "line": 39,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 983,
                            "end": 994,
                            "loc": {
                              "start": {
                                "line": 39,
                                "column": 12
                              },
                              "end": {
                                "line": 39,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 983,
                              "end": 987,
                              "loc": {
                                "start": {
                                  "line": 39,
                                  "column": 12
                                },
                                "end": {
                                  "line": 39,
                                  "column": 16
                                }
                              },
                              "name": "Math"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 988,
                              "end": 994,
                              "loc": {
                                "start": {
                                  "line": 39,
                                  "column": 17
                                },
                                "end": {
                                  "line": 39,
                                  "column": 23
                                }
                              },
                              "name": "random"
                            },
                            "computed": false
                          },
                          "arguments": []
                        },
                        "operator": "<",
                        "right": {
                          "type": "Literal",
                          "start": 999,
                          "end": 1002,
                          "loc": {
                            "start": {
                              "line": 39,
                              "column": 28
                            },
                            "end": {
                              "line": 39,
                              "column": 31
                            }
                          },
                          "value": 0.5,
                          "rawValue": 0.5,
                          "raw": "0.5"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 1017,
                        "end": 1051,
                        "loc": {
                          "start": {
                            "line": 40,
                            "column": 12
                          },
                          "end": {
                            "line": 40,
                            "column": 46
                          }
                        },
                        "argument": {
                          "type": "CallExpression",
                          "start": 1024,
                          "end": 1050,
                          "loc": {
                            "start": {
                              "line": 40,
                              "column": 19
                            },
                            "end": {
                              "line": 40,
                              "column": 45
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1024,
                            "end": 1038,
                            "loc": {
                              "start": {
                                "line": 40,
                                "column": 19
                              },
                              "end": {
                                "line": 40,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 1024,
                              "end": 1028,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 19
                                },
                                "end": {
                                  "line": 40,
                                  "column": 23
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1029,
                              "end": 1038,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 24
                                },
                                "end": {
                                  "line": 40,
                                  "column": 33
                                }
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1039,
                              "end": 1043,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 34
                                },
                                "end": {
                                  "line": 40,
                                  "column": 38
                                }
                              },
                              "name": "objA"
                            },
                            {
                              "type": "Identifier",
                              "start": 1045,
                              "end": 1049,
                              "loc": {
                                "start": {
                                  "line": 40,
                                  "column": 40
                                },
                                "end": {
                                  "line": 40,
                                  "column": 44
                                }
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      },
                      "alternate": {
                        "type": "ReturnStatement",
                        "start": 1079,
                        "end": 1113,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 12
                          },
                          "end": {
                            "line": 42,
                            "column": 46
                          }
                        },
                        "argument": {
                          "type": "CallExpression",
                          "start": 1086,
                          "end": 1112,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 19
                            },
                            "end": {
                              "line": 42,
                              "column": 45
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1086,
                            "end": 1100,
                            "loc": {
                              "start": {
                                "line": 42,
                                "column": 19
                              },
                              "end": {
                                "line": 42,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 1086,
                              "end": 1090,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 19
                                },
                                "end": {
                                  "line": 42,
                                  "column": 23
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1091,
                              "end": 1100,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 24
                                },
                                "end": {
                                  "line": 42,
                                  "column": 33
                                }
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1101,
                              "end": 1105,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 34
                                },
                                "end": {
                                  "line": 42,
                                  "column": 38
                                }
                              },
                              "name": "objB"
                            },
                            {
                              "type": "Identifier",
                              "start": 1107,
                              "end": 1111,
                              "loc": {
                                "start": {
                                  "line": 42,
                                  "column": 40
                                },
                                "end": {
                                  "line": 42,
                                  "column": 44
                                }
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 1128,
              "end": 1198,
              "loc": {
                "start": {
                  "line": 45,
                  "column": 4
                },
                "end": {
                  "line": 47,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1128,
                "end": 1138,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 4
                  },
                  "end": {
                    "line": 45,
                    "column": 14
                  }
                },
                "name": "getTouched"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 1138,
                "end": 1198,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 14
                  },
                  "end": {
                    "line": 47,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 1141,
                  "end": 1198,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 17
                    },
                    "end": {
                      "line": 47,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 1152,
                      "end": 1191,
                      "loc": {
                        "start": {
                          "line": 46,
                          "column": 8
                        },
                        "end": {
                          "line": 46,
                          "column": 47
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 1159,
                        "end": 1190,
                        "loc": {
                          "start": {
                            "line": 46,
                            "column": 15
                          },
                          "end": {
                            "line": 46,
                            "column": 46
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1159,
                          "end": 1169,
                          "loc": {
                            "start": {
                              "line": 46,
                              "column": 15
                            },
                            "end": {
                              "line": 46,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1159,
                            "end": 1164,
                            "loc": {
                              "start": {
                                "line": 46,
                                "column": 15
                              },
                              "end": {
                                "line": 46,
                                "column": 20
                              }
                            },
                            "name": "Array"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1165,
                            "end": 1169,
                            "loc": {
                              "start": {
                                "line": 46,
                                "column": 21
                              },
                              "end": {
                                "line": 46,
                                "column": 25
                              }
                            },
                            "name": "from"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "CallExpression",
                            "start": 1170,
                            "end": 1189,
                            "loc": {
                              "start": {
                                "line": 46,
                                "column": 26
                              },
                              "end": {
                                "line": 46,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1170,
                              "end": 1187,
                              "loc": {
                                "start": {
                                  "line": 46,
                                  "column": 26
                                },
                                "end": {
                                  "line": 46,
                                  "column": 43
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 1170,
                                "end": 1182,
                                "loc": {
                                  "start": {
                                    "line": 46,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 46,
                                    "column": 38
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1170,
                                  "end": 1174,
                                  "loc": {
                                    "start": {
                                      "line": 46,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 46,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1175,
                                  "end": 1182,
                                  "loc": {
                                    "start": {
                                      "line": 46,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 46,
                                      "column": 38
                                    }
                                  },
                                  "name": "parents"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1183,
                                "end": 1187,
                                "loc": {
                                  "start": {
                                    "line": 46,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 46,
                                    "column": 43
                                  }
                                },
                                "name": "keys"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Disjoint Set Union ========================",
            "start": 193,
            "end": 261,
            "loc": {
              "start": {
                "line": 6,
                "column": 0
              },
              "end": {
                "line": 6,
                "column": 68
              }
            },
            "range": [
              193,
              261
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Constraints adder ========================",
            "start": 1205,
            "end": 1272,
            "loc": {
              "start": {
                "line": 50,
                "column": 0
              },
              "end": {
                "line": 50,
                "column": 67
              }
            },
            "range": [
              1205,
              1272
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Disjoint Set Union ========================",
          "start": 193,
          "end": 261,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            193,
            261
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 1205,
          "end": 1272,
          "loc": {
            "start": {
              "line": 50,
              "column": 0
            },
            "end": {
              "line": 50,
              "column": 67
            }
          },
          "range": [
            1205,
            1272
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 1274,
      "end": 5776,
      "loc": {
        "start": {
          "line": 51,
          "column": 0
        },
        "end": {
          "line": 156,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 1281,
        "end": 5776,
        "loc": {
          "start": {
            "line": 51,
            "column": 7
          },
          "end": {
            "line": 156,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 1287,
          "end": 1303,
          "loc": {
            "start": {
              "line": 51,
              "column": 13
            },
            "end": {
              "line": 51,
              "column": 29
            }
          },
          "name": "ConstraintsAdder",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 1304,
          "end": 5776,
          "loc": {
            "start": {
              "line": 51,
              "column": 30
            },
            "end": {
              "line": 156,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 1311,
              "end": 1908,
              "loc": {
                "start": {
                  "line": 52,
                  "column": 4
                },
                "end": {
                  "line": 67,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1311,
                "end": 1322,
                "loc": {
                  "start": {
                    "line": 52,
                    "column": 4
                  },
                  "end": {
                    "line": 52,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 1322,
                "end": 1908,
                "loc": {
                  "start": {
                    "line": 52,
                    "column": 15
                  },
                  "end": {
                    "line": 67,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1323,
                    "end": 1329,
                    "loc": {
                      "start": {
                        "line": 52,
                        "column": 16
                      },
                      "end": {
                        "line": 52,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1331,
                  "end": 1908,
                  "loc": {
                    "start": {
                      "line": 52,
                      "column": 24
                    },
                    "end": {
                      "line": 67,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1399,
                      "end": 1420,
                      "loc": {
                        "start": {
                          "line": 54,
                          "column": 8
                        },
                        "end": {
                          "line": 54,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1399,
                        "end": 1419,
                        "loc": {
                          "start": {
                            "line": 54,
                            "column": 8
                          },
                          "end": {
                            "line": 54,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1399,
                          "end": 1410,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1399,
                            "end": 1403,
                            "loc": {
                              "start": {
                                "line": 54,
                                "column": 8
                              },
                              "end": {
                                "line": 54,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1404,
                            "end": 1410,
                            "loc": {
                              "start": {
                                "line": 54,
                                "column": 13
                              },
                              "end": {
                                "line": 54,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 1413,
                          "end": 1419,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 22
                            },
                            "end": {
                              "line": 54,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the sketch we are going to add constraints to",
                          "start": 1342,
                          "end": 1389,
                          "loc": {
                            "start": {
                              "line": 53,
                              "column": 8
                            },
                            "end": {
                              "line": 53,
                              "column": 55
                            }
                          },
                          "range": [
                            1342,
                            1389
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1430,
                          "end": 1484,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 62
                            }
                          },
                          "range": [
                            1430,
                            1484
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1494,
                      "end": 1516,
                      "loc": {
                        "start": {
                          "line": 56,
                          "column": 8
                        },
                        "end": {
                          "line": 56,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1494,
                        "end": 1515,
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 8
                          },
                          "end": {
                            "line": 56,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1494,
                          "end": 1510,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 8
                            },
                            "end": {
                              "line": 56,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1494,
                            "end": 1498,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 8
                              },
                              "end": {
                                "line": 56,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1499,
                            "end": 1510,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 13
                              },
                              "end": {
                                "line": 56,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 1513,
                          "end": 1515,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 27
                            },
                            "end": {
                              "line": 56,
                              "column": 29
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1430,
                          "end": 1484,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 62
                            }
                          },
                          "range": [
                            1430,
                            1484
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1528,
                          "end": 1586,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 66
                            }
                          },
                          "range": [
                            1528,
                            1586
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1596,
                      "end": 1626,
                      "loc": {
                        "start": {
                          "line": 59,
                          "column": 8
                        },
                        "end": {
                          "line": 59,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1596,
                        "end": 1625,
                        "loc": {
                          "start": {
                            "line": 59,
                            "column": 8
                          },
                          "end": {
                            "line": 59,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1596,
                          "end": 1613,
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 8
                            },
                            "end": {
                              "line": 59,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1596,
                            "end": 1600,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 8
                              },
                              "end": {
                                "line": 59,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1601,
                            "end": 1613,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 13
                              },
                              "end": {
                                "line": 59,
                                "column": 25
                              }
                            },
                            "name": "incidenceDsu"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1616,
                          "end": 1625,
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 28
                            },
                            "end": {
                              "line": 59,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1620,
                            "end": 1623,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 32
                              },
                              "end": {
                                "line": 59,
                                "column": 35
                              }
                            },
                            "name": "DSU"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1528,
                          "end": 1586,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 66
                            }
                          },
                          "range": [
                            1528,
                            1586
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1636,
                          "end": 1678,
                          "loc": {
                            "start": {
                              "line": 60,
                              "column": 8
                            },
                            "end": {
                              "line": 60,
                              "column": 50
                            }
                          },
                          "range": [
                            1636,
                            1678
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1688,
                          "end": 1727,
                          "loc": {
                            "start": {
                              "line": 61,
                              "column": 8
                            },
                            "end": {
                              "line": 61,
                              "column": 47
                            }
                          },
                          "range": [
                            1688,
                            1727
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1737,
                      "end": 1768,
                      "loc": {
                        "start": {
                          "line": 62,
                          "column": 8
                        },
                        "end": {
                          "line": 62,
                          "column": 39
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1737,
                        "end": 1767,
                        "loc": {
                          "start": {
                            "line": 62,
                            "column": 8
                          },
                          "end": {
                            "line": 62,
                            "column": 38
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1737,
                          "end": 1755,
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 8
                            },
                            "end": {
                              "line": 62,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1737,
                            "end": 1741,
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 8
                              },
                              "end": {
                                "line": 62,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1742,
                            "end": 1755,
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 13
                              },
                              "end": {
                                "line": 62,
                                "column": 26
                              }
                            },
                            "name": "horizontalSet"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1758,
                          "end": 1767,
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 29
                            },
                            "end": {
                              "line": 62,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1762,
                            "end": 1765,
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 33
                              },
                              "end": {
                                "line": 62,
                                "column": 36
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1636,
                          "end": 1678,
                          "loc": {
                            "start": {
                              "line": 60,
                              "column": 8
                            },
                            "end": {
                              "line": 60,
                              "column": 50
                            }
                          },
                          "range": [
                            1636,
                            1678
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1688,
                          "end": 1727,
                          "loc": {
                            "start": {
                              "line": 61,
                              "column": 8
                            },
                            "end": {
                              "line": 61,
                              "column": 47
                            }
                          },
                          "range": [
                            1688,
                            1727
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1778,
                      "end": 1807,
                      "loc": {
                        "start": {
                          "line": 63,
                          "column": 8
                        },
                        "end": {
                          "line": 63,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1778,
                        "end": 1806,
                        "loc": {
                          "start": {
                            "line": 63,
                            "column": 8
                          },
                          "end": {
                            "line": 63,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1778,
                          "end": 1794,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 8
                            },
                            "end": {
                              "line": 63,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1778,
                            "end": 1782,
                            "loc": {
                              "start": {
                                "line": 63,
                                "column": 8
                              },
                              "end": {
                                "line": 63,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1783,
                            "end": 1794,
                            "loc": {
                              "start": {
                                "line": 63,
                                "column": 13
                              },
                              "end": {
                                "line": 63,
                                "column": 24
                              }
                            },
                            "name": "verticalSet"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1797,
                          "end": 1806,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 27
                            },
                            "end": {
                              "line": 63,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1801,
                            "end": 1804,
                            "loc": {
                              "start": {
                                "line": 63,
                                "column": 31
                              },
                              "end": {
                                "line": 63,
                                "column": 34
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1819,
                          "end": 1879,
                          "loc": {
                            "start": {
                              "line": 65,
                              "column": 8
                            },
                            "end": {
                              "line": 65,
                              "column": 68
                            }
                          },
                          "range": [
                            1819,
                            1879
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1889,
                      "end": 1901,
                      "loc": {
                        "start": {
                          "line": 66,
                          "column": 8
                        },
                        "end": {
                          "line": 66,
                          "column": 20
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1889,
                        "end": 1900,
                        "loc": {
                          "start": {
                            "line": 66,
                            "column": 8
                          },
                          "end": {
                            "line": 66,
                            "column": 19
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1889,
                          "end": 1898,
                          "loc": {
                            "start": {
                              "line": 66,
                              "column": 8
                            },
                            "end": {
                              "line": 66,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1889,
                            "end": 1893,
                            "loc": {
                              "start": {
                                "line": 66,
                                "column": 8
                              },
                              "end": {
                                "line": 66,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1894,
                            "end": 1898,
                            "loc": {
                              "start": {
                                "line": 66,
                                "column": 13
                              },
                              "end": {
                                "line": 66,
                                "column": 17
                              }
                            },
                            "name": "init"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1819,
                          "end": 1879,
                          "loc": {
                            "start": {
                              "line": 65,
                              "column": 8
                            },
                            "end": {
                              "line": 65,
                              "column": 68
                            }
                          },
                          "range": [
                            1819,
                            1879
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 1916,
              "end": 2496,
              "loc": {
                "start": {
                  "line": 69,
                  "column": 4
                },
                "end": {
                  "line": 80,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1916,
                "end": 1920,
                "loc": {
                  "start": {
                    "line": 69,
                    "column": 4
                  },
                  "end": {
                    "line": 69,
                    "column": 8
                  }
                },
                "name": "init"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 1920,
                "end": 2496,
                "loc": {
                  "start": {
                    "line": 69,
                    "column": 8
                  },
                  "end": {
                    "line": 80,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 1923,
                  "end": 2496,
                  "loc": {
                    "start": {
                      "line": 69,
                      "column": 11
                    },
                    "end": {
                      "line": 80,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 1987,
                      "end": 2042,
                      "loc": {
                        "start": {
                          "line": 71,
                          "column": 8
                        },
                        "end": {
                          "line": 71,
                          "column": 63
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1991,
                          "end": 2041,
                          "loc": {
                            "start": {
                              "line": 71,
                              "column": 12
                            },
                            "end": {
                              "line": 71,
                              "column": 62
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1991,
                            "end": 2002,
                            "loc": {
                              "start": {
                                "line": 71,
                                "column": 12
                              },
                              "end": {
                                "line": 71,
                                "column": 23
                              }
                            },
                            "name": "constraints",
                            "leadingComments": null
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 2005,
                            "end": 2041,
                            "loc": {
                              "start": {
                                "line": 71,
                                "column": 26
                              },
                              "end": {
                                "line": 71,
                                "column": 62
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 2005,
                              "end": 2039,
                              "loc": {
                                "start": {
                                  "line": 71,
                                  "column": 26
                                },
                                "end": {
                                  "line": 71,
                                  "column": 60
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 2005,
                                "end": 2016,
                                "loc": {
                                  "start": {
                                    "line": 71,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 71,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 2005,
                                  "end": 2009,
                                  "loc": {
                                    "start": {
                                      "line": 71,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 71,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2010,
                                  "end": 2016,
                                  "loc": {
                                    "start": {
                                      "line": 71,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 71,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 2017,
                                "end": 2039,
                                "loc": {
                                  "start": {
                                    "line": 71,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 71,
                                    "column": 60
                                  }
                                },
                                "name": "getConstraintsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          },
                          "leadingComments": null
                        }
                      ],
                      "kind": "var",
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "take all present constraints into account",
                          "start": 1934,
                          "end": 1977,
                          "loc": {
                            "start": {
                              "line": 70,
                              "column": 8
                            },
                            "end": {
                              "line": 70,
                              "column": 51
                            }
                          },
                          "range": [
                            1934,
                            1977
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 2052,
                      "end": 2489,
                      "loc": {
                        "start": {
                          "line": 72,
                          "column": 8
                        },
                        "end": {
                          "line": 79,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 2057,
                        "end": 2067,
                        "loc": {
                          "start": {
                            "line": 72,
                            "column": 13
                          },
                          "end": {
                            "line": 72,
                            "column": 23
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 2061,
                            "end": 2067,
                            "loc": {
                              "start": {
                                "line": 72,
                                "column": 17
                              },
                              "end": {
                                "line": 72,
                                "column": 23
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 2061,
                              "end": 2067,
                              "loc": {
                                "start": {
                                  "line": 72,
                                  "column": 17
                                },
                                "end": {
                                  "line": 72,
                                  "column": 23
                                }
                              },
                              "name": "constr"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 2071,
                        "end": 2082,
                        "loc": {
                          "start": {
                            "line": 72,
                            "column": 27
                          },
                          "end": {
                            "line": 72,
                            "column": 38
                          }
                        },
                        "name": "constraints"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 2084,
                        "end": 2489,
                        "loc": {
                          "start": {
                            "line": 72,
                            "column": 40
                          },
                          "end": {
                            "line": 79,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 2099,
                            "end": 2226,
                            "loc": {
                              "start": {
                                "line": 73,
                                "column": 12
                              },
                              "end": {
                                "line": 74,
                                "column": 72
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2103,
                              "end": 2151,
                              "loc": {
                                "start": {
                                  "line": 73,
                                  "column": 16
                                },
                                "end": {
                                  "line": 73,
                                  "column": 64
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2103,
                                "end": 2118,
                                "loc": {
                                  "start": {
                                    "line": 73,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 73,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2103,
                                  "end": 2109,
                                  "loc": {
                                    "start": {
                                      "line": 73,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 73,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2110,
                                  "end": 2118,
                                  "loc": {
                                    "start": {
                                      "line": 73,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 73,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2123,
                                "end": 2151,
                                "loc": {
                                  "start": {
                                    "line": 73,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 73,
                                    "column": 64
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2123,
                                  "end": 2148,
                                  "loc": {
                                    "start": {
                                      "line": 73,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 73,
                                      "column": 61
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2123,
                                    "end": 2138,
                                    "loc": {
                                      "start": {
                                        "line": 73,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 73,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2123,
                                      "end": 2133,
                                      "loc": {
                                        "start": {
                                          "line": 73,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 73,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2134,
                                      "end": 2138,
                                      "loc": {
                                        "start": {
                                          "line": 73,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 73,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2139,
                                    "end": 2148,
                                    "loc": {
                                      "start": {
                                        "line": 73,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 73,
                                        "column": 61
                                      }
                                    },
                                    "name": "INCIDENCE"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2149,
                                  "end": 2150,
                                  "loc": {
                                    "start": {
                                      "line": 73,
                                      "column": 62
                                    },
                                    "end": {
                                      "line": 73,
                                      "column": 63
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2170,
                              "end": 2226,
                              "loc": {
                                "start": {
                                  "line": 74,
                                  "column": 16
                                },
                                "end": {
                                  "line": 74,
                                  "column": 72
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2170,
                                "end": 2225,
                                "loc": {
                                  "start": {
                                    "line": 74,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 74,
                                    "column": 71
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2170,
                                  "end": 2193,
                                  "loc": {
                                    "start": {
                                      "line": 74,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 74,
                                      "column": 39
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2170,
                                    "end": 2187,
                                    "loc": {
                                      "start": {
                                        "line": 74,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 74,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2170,
                                      "end": 2174,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2175,
                                      "end": 2187,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2188,
                                    "end": 2193,
                                    "loc": {
                                      "start": {
                                        "line": 74,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 74,
                                        "column": 39
                                      }
                                    },
                                    "name": "merge"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2194,
                                    "end": 2208,
                                    "loc": {
                                      "start": {
                                        "line": 74,
                                        "column": 40
                                      },
                                      "end": {
                                        "line": 74,
                                        "column": 54
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2194,
                                      "end": 2205,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 40
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 51
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2194,
                                        "end": 2200,
                                        "loc": {
                                          "start": {
                                            "line": 74,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 74,
                                            "column": 46
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2201,
                                        "end": 2205,
                                        "loc": {
                                          "start": {
                                            "line": 74,
                                            "column": 47
                                          },
                                          "end": {
                                            "line": 74,
                                            "column": 51
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2206,
                                      "end": 2207,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 53
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  },
                                  {
                                    "type": "MemberExpression",
                                    "start": 2210,
                                    "end": 2224,
                                    "loc": {
                                      "start": {
                                        "line": 74,
                                        "column": 56
                                      },
                                      "end": {
                                        "line": 74,
                                        "column": 70
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2210,
                                      "end": 2221,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 56
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 67
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2210,
                                        "end": 2216,
                                        "loc": {
                                          "start": {
                                            "line": 74,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 74,
                                            "column": 62
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2217,
                                        "end": 2221,
                                        "loc": {
                                          "start": {
                                            "line": 74,
                                            "column": 63
                                          },
                                          "end": {
                                            "line": 74,
                                            "column": 67
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2222,
                                      "end": 2223,
                                      "loc": {
                                        "start": {
                                          "line": 74,
                                          "column": 68
                                        },
                                        "end": {
                                          "line": 74,
                                          "column": 69
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 2240,
                            "end": 2350,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 12
                              },
                              "end": {
                                "line": 76,
                                "column": 53
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2244,
                              "end": 2294,
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 16
                                },
                                "end": {
                                  "line": 75,
                                  "column": 66
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2244,
                                "end": 2259,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2244,
                                  "end": 2250,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2251,
                                  "end": 2259,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2264,
                                "end": 2294,
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 66
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2264,
                                  "end": 2291,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 63
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2264,
                                    "end": 2279,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2264,
                                      "end": 2274,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2275,
                                      "end": 2279,
                                      "loc": {
                                        "start": {
                                          "line": 75,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 75,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2280,
                                    "end": 2291,
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 63
                                      }
                                    },
                                    "name": "VERTICALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2292,
                                  "end": 2293,
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 64
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 65
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2313,
                              "end": 2350,
                              "loc": {
                                "start": {
                                  "line": 76,
                                  "column": 16
                                },
                                "end": {
                                  "line": 76,
                                  "column": 53
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2313,
                                "end": 2349,
                                "loc": {
                                  "start": {
                                    "line": 76,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 76,
                                    "column": 52
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2313,
                                  "end": 2333,
                                  "loc": {
                                    "start": {
                                      "line": 76,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 76,
                                      "column": 36
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2313,
                                    "end": 2329,
                                    "loc": {
                                      "start": {
                                        "line": 76,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 76,
                                        "column": 32
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2313,
                                      "end": 2317,
                                      "loc": {
                                        "start": {
                                          "line": 76,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 76,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2318,
                                      "end": 2329,
                                      "loc": {
                                        "start": {
                                          "line": 76,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 76,
                                          "column": 32
                                        }
                                      },
                                      "name": "verticalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2330,
                                    "end": 2333,
                                    "loc": {
                                      "start": {
                                        "line": 76,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 76,
                                        "column": 36
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2334,
                                    "end": 2348,
                                    "loc": {
                                      "start": {
                                        "line": 76,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 76,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2334,
                                      "end": 2345,
                                      "loc": {
                                        "start": {
                                          "line": 76,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 76,
                                          "column": 48
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2334,
                                        "end": 2340,
                                        "loc": {
                                          "start": {
                                            "line": 76,
                                            "column": 37
                                          },
                                          "end": {
                                            "line": 76,
                                            "column": 43
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2341,
                                        "end": 2345,
                                        "loc": {
                                          "start": {
                                            "line": 76,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 76,
                                            "column": 48
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2346,
                                      "end": 2347,
                                      "loc": {
                                        "start": {
                                          "line": 76,
                                          "column": 49
                                        },
                                        "end": {
                                          "line": 76,
                                          "column": 50
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 2364,
                            "end": 2478,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 12
                              },
                              "end": {
                                "line": 78,
                                "column": 55
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2368,
                              "end": 2420,
                              "loc": {
                                "start": {
                                  "line": 77,
                                  "column": 16
                                },
                                "end": {
                                  "line": 77,
                                  "column": 68
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2368,
                                "end": 2383,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2368,
                                  "end": 2374,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2375,
                                  "end": 2383,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2388,
                                "end": 2420,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 68
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2388,
                                  "end": 2417,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 65
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2388,
                                    "end": 2403,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2388,
                                      "end": 2398,
                                      "loc": {
                                        "start": {
                                          "line": 77,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 77,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2399,
                                      "end": 2403,
                                      "loc": {
                                        "start": {
                                          "line": 77,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 77,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2404,
                                    "end": 2417,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 65
                                      }
                                    },
                                    "name": "HORIZONTALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2418,
                                  "end": 2419,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 66
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 67
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2439,
                              "end": 2478,
                              "loc": {
                                "start": {
                                  "line": 78,
                                  "column": 16
                                },
                                "end": {
                                  "line": 78,
                                  "column": 55
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2439,
                                "end": 2477,
                                "loc": {
                                  "start": {
                                    "line": 78,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 78,
                                    "column": 54
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2439,
                                  "end": 2461,
                                  "loc": {
                                    "start": {
                                      "line": 78,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 78,
                                      "column": 38
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2439,
                                    "end": 2457,
                                    "loc": {
                                      "start": {
                                        "line": 78,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 78,
                                        "column": 34
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2439,
                                      "end": 2443,
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2444,
                                      "end": 2457,
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 34
                                        }
                                      },
                                      "name": "horizontalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2458,
                                    "end": 2461,
                                    "loc": {
                                      "start": {
                                        "line": 78,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 78,
                                        "column": 38
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2462,
                                    "end": 2476,
                                    "loc": {
                                      "start": {
                                        "line": 78,
                                        "column": 39
                                      },
                                      "end": {
                                        "line": 78,
                                        "column": 53
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2462,
                                      "end": 2473,
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2462,
                                        "end": 2468,
                                        "loc": {
                                          "start": {
                                            "line": 78,
                                            "column": 39
                                          },
                                          "end": {
                                            "line": 78,
                                            "column": 45
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2469,
                                        "end": 2473,
                                        "loc": {
                                          "start": {
                                            "line": 78,
                                            "column": 46
                                          },
                                          "end": {
                                            "line": 78,
                                            "column": 50
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2474,
                                      "end": 2475,
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 51
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 52
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          }
                        ]
                      }
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": "add new constraint to internal buffer (if it is not excessive)",
                  "start": 2504,
                  "end": 2568,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 4
                    },
                    "end": {
                      "line": 82,
                      "column": 68
                    }
                  },
                  "range": [
                    2504,
                    2568
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 2574,
              "end": 5422,
              "loc": {
                "start": {
                  "line": 83,
                  "column": 4
                },
                "end": {
                  "line": 144,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2574,
                "end": 2577,
                "loc": {
                  "start": {
                    "line": 83,
                    "column": 4
                  },
                  "end": {
                    "line": 83,
                    "column": 7
                  }
                },
                "name": "add",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2577,
                "end": 5422,
                "loc": {
                  "start": {
                    "line": 83,
                    "column": 7
                  },
                  "end": {
                    "line": 144,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2578,
                    "end": 2583,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 8
                      },
                      "end": {
                        "line": 83,
                        "column": 13
                      }
                    },
                    "name": "types"
                  },
                  {
                    "type": "Identifier",
                    "start": 2585,
                    "end": 2589,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 15
                      },
                      "end": {
                        "line": 83,
                        "column": 19
                      }
                    },
                    "name": "args"
                  },
                  {
                    "type": "Identifier",
                    "start": 2591,
                    "end": 2601,
                    "loc": {
                      "start": {
                        "line": 83,
                        "column": 21
                      },
                      "end": {
                        "line": 83,
                        "column": 31
                      }
                    },
                    "name": "attributes"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 2603,
                  "end": 5422,
                  "loc": {
                    "start": {
                      "line": 83,
                      "column": 33
                    },
                    "end": {
                      "line": 144,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 2614,
                      "end": 2630,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 8
                        },
                        "end": {
                          "line": 84,
                          "column": 24
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 2618,
                          "end": 2629,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 12
                            },
                            "end": {
                              "line": 84,
                              "column": 23
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 2618,
                            "end": 2621,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 12
                              },
                              "end": {
                                "line": 84,
                                "column": 15
                              }
                            },
                            "name": "add"
                          },
                          "init": {
                            "type": "Literal",
                            "start": 2624,
                            "end": 2629,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 18
                              },
                              "end": {
                                "line": 84,
                                "column": 23
                              }
                            },
                            "value": false,
                            "rawValue": false,
                            "raw": "false"
                          }
                        }
                      ],
                      "kind": "var",
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "if the new constraint is not excessive, then take it into account",
                          "start": 2640,
                          "end": 2707,
                          "loc": {
                            "start": {
                              "line": 85,
                              "column": 8
                            },
                            "end": {
                              "line": 85,
                              "column": 75
                            }
                          },
                          "range": [
                            2640,
                            2707
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 2717,
                      "end": 5301,
                      "loc": {
                        "start": {
                          "line": 86,
                          "column": 8
                        },
                        "end": {
                          "line": 140,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 2721,
                        "end": 2756,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 12
                          },
                          "end": {
                            "line": 86,
                            "column": 47
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 2721,
                          "end": 2726,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 12
                            },
                            "end": {
                              "line": 86,
                              "column": 17
                            }
                          },
                          "name": "types",
                          "leadingComments": null
                        },
                        "operator": "===",
                        "right": {
                          "type": "MemberExpression",
                          "start": 2731,
                          "end": 2756,
                          "loc": {
                            "start": {
                              "line": 86,
                              "column": 22
                            },
                            "end": {
                              "line": 86,
                              "column": 47
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 2731,
                            "end": 2746,
                            "loc": {
                              "start": {
                                "line": 86,
                                "column": 22
                              },
                              "end": {
                                "line": 86,
                                "column": 37
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2731,
                              "end": 2741,
                              "loc": {
                                "start": {
                                  "line": 86,
                                  "column": 22
                                },
                                "end": {
                                  "line": 86,
                                  "column": 32
                                }
                              },
                              "name": "Constraint"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2742,
                              "end": 2746,
                              "loc": {
                                "start": {
                                  "line": 86,
                                  "column": 33
                                },
                                "end": {
                                  "line": 86,
                                  "column": 37
                                }
                              },
                              "name": "Type"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2747,
                            "end": 2756,
                            "loc": {
                              "start": {
                                "line": 86,
                                "column": 38
                              },
                              "end": {
                                "line": 86,
                                "column": 47
                              }
                            },
                            "name": "INCIDENCE"
                          },
                          "computed": false
                        },
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 2758,
                        "end": 3242,
                        "loc": {
                          "start": {
                            "line": 86,
                            "column": 49
                          },
                          "end": {
                            "line": 94,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 3047,
                            "end": 3231,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 12
                              },
                              "end": {
                                "line": 93,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 3051,
                              "end": 3124,
                              "loc": {
                                "start": {
                                  "line": 90,
                                  "column": 16
                                },
                                "end": {
                                  "line": 90,
                                  "column": 89
                                }
                              },
                              "left": {
                                "type": "CallExpression",
                                "start": 3051,
                                "end": 3085,
                                "loc": {
                                  "start": {
                                    "line": 90,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 90,
                                    "column": 50
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 3051,
                                  "end": 3076,
                                  "loc": {
                                    "start": {
                                      "line": 90,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 90,
                                      "column": 41
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 3051,
                                    "end": 3068,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 3051,
                                      "end": 3055,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 20
                                        }
                                      },
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3056,
                                      "end": 3068,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3069,
                                    "end": 3076,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 41
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false,
                                  "leadingComments": null
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 3077,
                                    "end": 3084,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 49
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 3077,
                                      "end": 3081,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 42
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 46
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 3082,
                                      "end": 3083,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 48
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ],
                                "leadingComments": null
                              },
                              "operator": "!==",
                              "right": {
                                "type": "CallExpression",
                                "start": 3090,
                                "end": 3124,
                                "loc": {
                                  "start": {
                                    "line": 90,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 90,
                                    "column": 89
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 3090,
                                  "end": 3115,
                                  "loc": {
                                    "start": {
                                      "line": 90,
                                      "column": 55
                                    },
                                    "end": {
                                      "line": 90,
                                      "column": 80
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 3090,
                                    "end": 3107,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 55
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 72
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 3090,
                                      "end": 3094,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 55
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 59
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3095,
                                      "end": 3107,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 60
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 72
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3108,
                                    "end": 3115,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 73
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 80
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 3116,
                                    "end": 3123,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 81
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 88
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 3116,
                                      "end": 3120,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 81
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 85
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 3121,
                                      "end": 3122,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 86
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 87
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              },
                              "leadingComments": null
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 3126,
                              "end": 3231,
                              "loc": {
                                "start": {
                                  "line": 90,
                                  "column": 91
                                },
                                "end": {
                                  "line": 93,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3145,
                                  "end": 3156,
                                  "loc": {
                                    "start": {
                                      "line": 91,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 91,
                                      "column": 27
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3145,
                                    "end": 3155,
                                    "loc": {
                                      "start": {
                                        "line": 91,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 91,
                                        "column": 26
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 3145,
                                      "end": 3148,
                                      "loc": {
                                        "start": {
                                          "line": 91,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 91,
                                          "column": 19
                                        }
                                      },
                                      "name": "add"
                                    },
                                    "right": {
                                      "type": "Literal",
                                      "start": 3151,
                                      "end": 3155,
                                      "loc": {
                                        "start": {
                                          "line": 91,
                                          "column": 22
                                        },
                                        "end": {
                                          "line": 91,
                                          "column": 26
                                        }
                                      },
                                      "value": true,
                                      "rawValue": true,
                                      "raw": "true"
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3174,
                                  "end": 3216,
                                  "loc": {
                                    "start": {
                                      "line": 92,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 92,
                                      "column": 58
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 3174,
                                    "end": 3215,
                                    "loc": {
                                      "start": {
                                        "line": 92,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 92,
                                        "column": 57
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3174,
                                      "end": 3197,
                                      "loc": {
                                        "start": {
                                          "line": 92,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 92,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 3174,
                                        "end": 3191,
                                        "loc": {
                                          "start": {
                                            "line": 92,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 92,
                                            "column": 33
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3174,
                                          "end": 3178,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 20
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3179,
                                          "end": 3191,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 21
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 33
                                            }
                                          },
                                          "name": "incidenceDsu"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3192,
                                        "end": 3197,
                                        "loc": {
                                          "start": {
                                            "line": 92,
                                            "column": 34
                                          },
                                          "end": {
                                            "line": 92,
                                            "column": 39
                                          }
                                        },
                                        "name": "merge"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3198,
                                        "end": 3205,
                                        "loc": {
                                          "start": {
                                            "line": 92,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 92,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3198,
                                          "end": 3202,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 3203,
                                          "end": 3204,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      },
                                      {
                                        "type": "MemberExpression",
                                        "start": 3207,
                                        "end": 3214,
                                        "loc": {
                                          "start": {
                                            "line": 92,
                                            "column": 49
                                          },
                                          "end": {
                                            "line": 92,
                                            "column": 56
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3207,
                                          "end": 3211,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 49
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 53
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 3212,
                                          "end": 3213,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 54
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 55
                                            }
                                          },
                                          "value": 1,
                                          "rawValue": 1,
                                          "raw": "1"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "alternate": null,
                            "leadingComments": [
                              {
                                "type": "CommentLine",
                                "value": "TODO: implemented more complicated handling of incidence",
                                "start": 2773,
                                "end": 2831,
                                "loc": {
                                  "start": {
                                    "line": 87,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 87,
                                    "column": 70
                                  }
                                },
                                "range": [
                                  2773,
                                  2831
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
                                "start": 2845,
                                "end": 2937,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 104
                                  }
                                },
                                "range": [
                                  2845,
                                  2937
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
                                "start": 2951,
                                "end": 3033,
                                "loc": {
                                  "start": {
                                    "line": 89,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 89,
                                    "column": 94
                                  }
                                },
                                "range": [
                                  2951,
                                  3033
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      "alternate": {
                        "type": "IfStatement",
                        "start": 3257,
                        "end": 5301,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 13
                          },
                          "end": {
                            "line": 140,
                            "column": 9
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 3261,
                          "end": 3298,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 17
                            },
                            "end": {
                              "line": 95,
                              "column": 54
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 3261,
                            "end": 3266,
                            "loc": {
                              "start": {
                                "line": 95,
                                "column": 17
                              },
                              "end": {
                                "line": 95,
                                "column": 22
                              }
                            },
                            "name": "types"
                          },
                          "operator": "===",
                          "right": {
                            "type": "MemberExpression",
                            "start": 3271,
                            "end": 3298,
                            "loc": {
                              "start": {
                                "line": 95,
                                "column": 27
                              },
                              "end": {
                                "line": 95,
                                "column": 54
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3271,
                              "end": 3286,
                              "loc": {
                                "start": {
                                  "line": 95,
                                  "column": 27
                                },
                                "end": {
                                  "line": 95,
                                  "column": 42
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 3271,
                                "end": 3281,
                                "loc": {
                                  "start": {
                                    "line": 95,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 95,
                                    "column": 37
                                  }
                                },
                                "name": "Constraint"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3282,
                                "end": 3286,
                                "loc": {
                                  "start": {
                                    "line": 95,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 95,
                                    "column": 42
                                  }
                                },
                                "name": "Type"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3287,
                              "end": 3298,
                              "loc": {
                                "start": {
                                  "line": 95,
                                  "column": 43
                                },
                                "end": {
                                  "line": 95,
                                  "column": 54
                                }
                              },
                              "name": "VERTICALITY"
                            },
                            "computed": false
                          }
                        },
                        "consequent": {
                          "type": "BlockStatement",
                          "start": 3300,
                          "end": 3455,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 56
                            },
                            "end": {
                              "line": 100,
                              "column": 9
                            }
                          },
                          "body": [
                            {
                              "type": "IfStatement",
                              "start": 3315,
                              "end": 3444,
                              "loc": {
                                "start": {
                                  "line": 96,
                                  "column": 12
                                },
                                "end": {
                                  "line": 99,
                                  "column": 13
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 3319,
                                "end": 3349,
                                "loc": {
                                  "start": {
                                    "line": 96,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 96,
                                    "column": 46
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 3320,
                                  "end": 3349,
                                  "loc": {
                                    "start": {
                                      "line": 96,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 96,
                                      "column": 46
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 3320,
                                    "end": 3340,
                                    "loc": {
                                      "start": {
                                        "line": 96,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 96,
                                        "column": 37
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 3320,
                                      "end": 3336,
                                      "loc": {
                                        "start": {
                                          "line": 96,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 96,
                                          "column": 33
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 3320,
                                        "end": 3324,
                                        "loc": {
                                          "start": {
                                            "line": 96,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 96,
                                            "column": 21
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3325,
                                        "end": 3336,
                                        "loc": {
                                          "start": {
                                            "line": 96,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 96,
                                            "column": 33
                                          }
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3337,
                                      "end": 3340,
                                      "loc": {
                                        "start": {
                                          "line": 96,
                                          "column": 34
                                        },
                                        "end": {
                                          "line": 96,
                                          "column": 37
                                        }
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 3341,
                                      "end": 3348,
                                      "loc": {
                                        "start": {
                                          "line": 96,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 96,
                                          "column": 45
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3341,
                                        "end": 3345,
                                        "loc": {
                                          "start": {
                                            "line": 96,
                                            "column": 38
                                          },
                                          "end": {
                                            "line": 96,
                                            "column": 42
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "property": {
                                        "type": "Literal",
                                        "start": 3346,
                                        "end": 3347,
                                        "loc": {
                                          "start": {
                                            "line": 96,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 96,
                                            "column": 44
                                          }
                                        },
                                        "value": 0,
                                        "rawValue": 0,
                                        "raw": "0"
                                      },
                                      "computed": true
                                    }
                                  ]
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "start": 3351,
                                "end": 3444,
                                "loc": {
                                  "start": {
                                    "line": 96,
                                    "column": 48
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 13
                                  }
                                },
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3370,
                                    "end": 3381,
                                    "loc": {
                                      "start": {
                                        "line": 97,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 97,
                                        "column": 27
                                      }
                                    },
                                    "expression": {
                                      "type": "AssignmentExpression",
                                      "start": 3370,
                                      "end": 3380,
                                      "loc": {
                                        "start": {
                                          "line": 97,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 97,
                                          "column": 26
                                        }
                                      },
                                      "operator": "=",
                                      "left": {
                                        "type": "Identifier",
                                        "start": 3370,
                                        "end": 3373,
                                        "loc": {
                                          "start": {
                                            "line": 97,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 97,
                                            "column": 19
                                          }
                                        },
                                        "name": "add"
                                      },
                                      "right": {
                                        "type": "Literal",
                                        "start": 3376,
                                        "end": 3380,
                                        "loc": {
                                          "start": {
                                            "line": 97,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 97,
                                            "column": 26
                                          }
                                        },
                                        "value": true,
                                        "rawValue": true,
                                        "raw": "true"
                                      }
                                    }
                                  },
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3399,
                                    "end": 3429,
                                    "loc": {
                                      "start": {
                                        "line": 98,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 98,
                                        "column": 46
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 3399,
                                      "end": 3428,
                                      "loc": {
                                        "start": {
                                          "line": 98,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 98,
                                          "column": 45
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3399,
                                        "end": 3419,
                                        "loc": {
                                          "start": {
                                            "line": 98,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 98,
                                            "column": 36
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3399,
                                          "end": 3415,
                                          "loc": {
                                            "start": {
                                              "line": 98,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 98,
                                              "column": 32
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3399,
                                            "end": 3403,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 20
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3404,
                                            "end": 3415,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 21
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 32
                                              }
                                            },
                                            "name": "verticalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3416,
                                          "end": 3419,
                                          "loc": {
                                            "start": {
                                              "line": 98,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 98,
                                              "column": 36
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 3420,
                                          "end": 3427,
                                          "loc": {
                                            "start": {
                                              "line": 98,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 98,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 3420,
                                            "end": 3424,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 41
                                              }
                                            },
                                            "name": "args"
                                          },
                                          "property": {
                                            "type": "Literal",
                                            "start": 3425,
                                            "end": 3426,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 42
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 43
                                              }
                                            },
                                            "value": 0,
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "computed": true
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "alternate": null
                            }
                          ]
                        },
                        "alternate": {
                          "type": "IfStatement",
                          "start": 3470,
                          "end": 5301,
                          "loc": {
                            "start": {
                              "line": 101,
                              "column": 13
                            },
                            "end": {
                              "line": 140,
                              "column": 9
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 3474,
                            "end": 3513,
                            "loc": {
                              "start": {
                                "line": 101,
                                "column": 17
                              },
                              "end": {
                                "line": 101,
                                "column": 56
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 3474,
                              "end": 3479,
                              "loc": {
                                "start": {
                                  "line": 101,
                                  "column": 17
                                },
                                "end": {
                                  "line": 101,
                                  "column": 22
                                }
                              },
                              "name": "types"
                            },
                            "operator": "===",
                            "right": {
                              "type": "MemberExpression",
                              "start": 3484,
                              "end": 3513,
                              "loc": {
                                "start": {
                                  "line": 101,
                                  "column": 27
                                },
                                "end": {
                                  "line": 101,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3484,
                                "end": 3499,
                                "loc": {
                                  "start": {
                                    "line": 101,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 101,
                                    "column": 42
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 3484,
                                  "end": 3494,
                                  "loc": {
                                    "start": {
                                      "line": 101,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 101,
                                      "column": 37
                                    }
                                  },
                                  "name": "Constraint"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3495,
                                  "end": 3499,
                                  "loc": {
                                    "start": {
                                      "line": 101,
                                      "column": 38
                                    },
                                    "end": {
                                      "line": 101,
                                      "column": 42
                                    }
                                  },
                                  "name": "Type"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3500,
                                "end": 3513,
                                "loc": {
                                  "start": {
                                    "line": 101,
                                    "column": 43
                                  },
                                  "end": {
                                    "line": 101,
                                    "column": 56
                                  }
                                },
                                "name": "HORIZONTALITY"
                              },
                              "computed": false
                            }
                          },
                          "consequent": {
                            "type": "BlockStatement",
                            "start": 3515,
                            "end": 3674,
                            "loc": {
                              "start": {
                                "line": 101,
                                "column": 58
                              },
                              "end": {
                                "line": 106,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "IfStatement",
                                "start": 3530,
                                "end": 3663,
                                "loc": {
                                  "start": {
                                    "line": 102,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 105,
                                    "column": 13
                                  }
                                },
                                "test": {
                                  "type": "UnaryExpression",
                                  "start": 3534,
                                  "end": 3566,
                                  "loc": {
                                    "start": {
                                      "line": 102,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 102,
                                      "column": 48
                                    }
                                  },
                                  "operator": "!",
                                  "prefix": true,
                                  "argument": {
                                    "type": "CallExpression",
                                    "start": 3535,
                                    "end": 3566,
                                    "loc": {
                                      "start": {
                                        "line": 102,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 102,
                                        "column": 48
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3535,
                                      "end": 3557,
                                      "loc": {
                                        "start": {
                                          "line": 102,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 102,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 3535,
                                        "end": 3553,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 35
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3535,
                                          "end": 3539,
                                          "loc": {
                                            "start": {
                                              "line": 102,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 102,
                                              "column": 21
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3540,
                                          "end": 3553,
                                          "loc": {
                                            "start": {
                                              "line": 102,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 102,
                                              "column": 35
                                            }
                                          },
                                          "name": "horizontalSet"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3554,
                                        "end": 3557,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 36
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 39
                                          }
                                        },
                                        "name": "has"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3558,
                                        "end": 3565,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3558,
                                          "end": 3562,
                                          "loc": {
                                            "start": {
                                              "line": 102,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 102,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 3563,
                                          "end": 3564,
                                          "loc": {
                                            "start": {
                                              "line": 102,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 102,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                },
                                "consequent": {
                                  "type": "BlockStatement",
                                  "start": 3568,
                                  "end": 3663,
                                  "loc": {
                                    "start": {
                                      "line": 102,
                                      "column": 50
                                    },
                                    "end": {
                                      "line": 105,
                                      "column": 13
                                    }
                                  },
                                  "body": [
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3587,
                                      "end": 3598,
                                      "loc": {
                                        "start": {
                                          "line": 103,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 103,
                                          "column": 27
                                        }
                                      },
                                      "expression": {
                                        "type": "AssignmentExpression",
                                        "start": 3587,
                                        "end": 3597,
                                        "loc": {
                                          "start": {
                                            "line": 103,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 103,
                                            "column": 26
                                          }
                                        },
                                        "operator": "=",
                                        "left": {
                                          "type": "Identifier",
                                          "start": 3587,
                                          "end": 3590,
                                          "loc": {
                                            "start": {
                                              "line": 103,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 103,
                                              "column": 19
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "right": {
                                          "type": "Literal",
                                          "start": 3593,
                                          "end": 3597,
                                          "loc": {
                                            "start": {
                                              "line": 103,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 103,
                                              "column": 26
                                            }
                                          },
                                          "value": true,
                                          "rawValue": true,
                                          "raw": "true"
                                        }
                                      }
                                    },
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3616,
                                      "end": 3648,
                                      "loc": {
                                        "start": {
                                          "line": 104,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 104,
                                          "column": 48
                                        }
                                      },
                                      "expression": {
                                        "type": "CallExpression",
                                        "start": 3616,
                                        "end": 3647,
                                        "loc": {
                                          "start": {
                                            "line": 104,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 104,
                                            "column": 47
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 3616,
                                          "end": 3638,
                                          "loc": {
                                            "start": {
                                              "line": 104,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 104,
                                              "column": 38
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 3616,
                                            "end": 3634,
                                            "loc": {
                                              "start": {
                                                "line": 104,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 104,
                                                "column": 34
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 3616,
                                              "end": 3620,
                                              "loc": {
                                                "start": {
                                                  "line": 104,
                                                  "column": 16
                                                },
                                                "end": {
                                                  "line": 104,
                                                  "column": 20
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3621,
                                              "end": 3634,
                                              "loc": {
                                                "start": {
                                                  "line": 104,
                                                  "column": 21
                                                },
                                                "end": {
                                                  "line": 104,
                                                  "column": 34
                                                }
                                              },
                                              "name": "horizontalSet"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3635,
                                            "end": 3638,
                                            "loc": {
                                              "start": {
                                                "line": 104,
                                                "column": 35
                                              },
                                              "end": {
                                                "line": 104,
                                                "column": 38
                                              }
                                            },
                                            "name": "add"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 3639,
                                            "end": 3646,
                                            "loc": {
                                              "start": {
                                                "line": 104,
                                                "column": 39
                                              },
                                              "end": {
                                                "line": 104,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3639,
                                              "end": 3643,
                                              "loc": {
                                                "start": {
                                                  "line": 104,
                                                  "column": 39
                                                },
                                                "end": {
                                                  "line": 104,
                                                  "column": 43
                                                }
                                              },
                                              "name": "args"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 3644,
                                              "end": 3645,
                                              "loc": {
                                                "start": {
                                                  "line": 104,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 104,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                },
                                "alternate": null
                              }
                            ]
                          },
                          "alternate": {
                            "type": "BlockStatement",
                            "start": 3689,
                            "end": 5301,
                            "loc": {
                              "start": {
                                "line": 107,
                                "column": 13
                              },
                              "end": {
                                "line": 140,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "VariableDeclaration",
                                "start": 3704,
                                "end": 3762,
                                "loc": {
                                  "start": {
                                    "line": 108,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 108,
                                    "column": 70
                                  }
                                },
                                "declarations": [
                                  {
                                    "type": "VariableDeclarator",
                                    "start": 3708,
                                    "end": 3761,
                                    "loc": {
                                      "start": {
                                        "line": 108,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 108,
                                        "column": 69
                                      }
                                    },
                                    "id": {
                                      "type": "Identifier",
                                      "start": 3708,
                                      "end": 3722,
                                      "loc": {
                                        "start": {
                                          "line": 108,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 108,
                                          "column": 30
                                        }
                                      },
                                      "name": "allConstraints"
                                    },
                                    "init": {
                                      "type": "CallExpression",
                                      "start": 3725,
                                      "end": 3761,
                                      "loc": {
                                        "start": {
                                          "line": 108,
                                          "column": 33
                                        },
                                        "end": {
                                          "line": 108,
                                          "column": 69
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3725,
                                        "end": 3759,
                                        "loc": {
                                          "start": {
                                            "line": 108,
                                            "column": 33
                                          },
                                          "end": {
                                            "line": 108,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3725,
                                          "end": 3736,
                                          "loc": {
                                            "start": {
                                              "line": 108,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 108,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3725,
                                            "end": 3729,
                                            "loc": {
                                              "start": {
                                                "line": 108,
                                                "column": 33
                                              },
                                              "end": {
                                                "line": 108,
                                                "column": 37
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3730,
                                            "end": 3736,
                                            "loc": {
                                              "start": {
                                                "line": 108,
                                                "column": 38
                                              },
                                              "end": {
                                                "line": 108,
                                                "column": 44
                                              }
                                            },
                                            "name": "sketch"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3737,
                                          "end": 3759,
                                          "loc": {
                                            "start": {
                                              "line": 108,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 108,
                                              "column": 67
                                            }
                                          },
                                          "name": "getConstraintsOnSketch"
                                        },
                                        "computed": false
                                      },
                                      "arguments": []
                                    }
                                  }
                                ],
                                "kind": "var"
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3776,
                                "end": 3842,
                                "loc": {
                                  "start": {
                                    "line": 109,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 109,
                                    "column": 78
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3776,
                                  "end": 3841,
                                  "loc": {
                                    "start": {
                                      "line": 109,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 109,
                                      "column": 77
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3776,
                                    "end": 3790,
                                    "loc": {
                                      "start": {
                                        "line": 109,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 109,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3793,
                                    "end": 3841,
                                    "loc": {
                                      "start": {
                                        "line": 109,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 109,
                                        "column": 77
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3793,
                                      "end": 3811,
                                      "loc": {
                                        "start": {
                                          "line": 109,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 109,
                                          "column": 47
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3793,
                                        "end": 3807,
                                        "loc": {
                                          "start": {
                                            "line": 109,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 109,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3808,
                                        "end": 3811,
                                        "loc": {
                                          "start": {
                                            "line": 109,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 109,
                                            "column": 47
                                          }
                                        },
                                        "name": "map"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "ArrowFunctionExpression",
                                        "start": 3812,
                                        "end": 3840,
                                        "loc": {
                                          "start": {
                                            "line": 109,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 109,
                                            "column": 76
                                          }
                                        },
                                        "id": null,
                                        "generator": false,
                                        "expression": true,
                                        "async": false,
                                        "params": [
                                          {
                                            "type": "Identifier",
                                            "start": 3813,
                                            "end": 3819,
                                            "loc": {
                                              "start": {
                                                "line": 109,
                                                "column": 49
                                              },
                                              "end": {
                                                "line": 109,
                                                "column": 55
                                              }
                                            },
                                            "name": "constr"
                                          }
                                        ],
                                        "body": {
                                          "type": "CallExpression",
                                          "start": 3824,
                                          "end": 3840,
                                          "loc": {
                                            "start": {
                                              "line": 109,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 109,
                                              "column": 76
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 3824,
                                            "end": 3838,
                                            "loc": {
                                              "start": {
                                                "line": 109,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 109,
                                                "column": 74
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3824,
                                              "end": 3830,
                                              "loc": {
                                                "start": {
                                                  "line": 109,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 109,
                                                  "column": 66
                                                }
                                              },
                                              "name": "constr"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3831,
                                              "end": 3838,
                                              "loc": {
                                                "start": {
                                                  "line": 109,
                                                  "column": 67
                                                },
                                                "end": {
                                                  "line": 109,
                                                  "column": 74
                                                }
                                              },
                                              "name": "getData"
                                            },
                                            "computed": false
                                          },
                                          "arguments": []
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3856,
                                "end": 3913,
                                "loc": {
                                  "start": {
                                    "line": 110,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 110,
                                    "column": 69
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3856,
                                  "end": 3912,
                                  "loc": {
                                    "start": {
                                      "line": 110,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 110,
                                      "column": 68
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3856,
                                    "end": 3870,
                                    "loc": {
                                      "start": {
                                        "line": 110,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 110,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3873,
                                    "end": 3912,
                                    "loc": {
                                      "start": {
                                        "line": 110,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 110,
                                        "column": 68
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3873,
                                      "end": 3894,
                                      "loc": {
                                        "start": {
                                          "line": 110,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 110,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3873,
                                        "end": 3887,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 110,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3888,
                                        "end": 3894,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 110,
                                            "column": 50
                                          }
                                        },
                                        "name": "concat"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3895,
                                        "end": 3911,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 51
                                          },
                                          "end": {
                                            "line": 110,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3895,
                                          "end": 3899,
                                          "loc": {
                                            "start": {
                                              "line": 110,
                                              "column": 51
                                            },
                                            "end": {
                                              "line": 110,
                                              "column": 55
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3900,
                                          "end": 3911,
                                          "loc": {
                                            "start": {
                                              "line": 110,
                                              "column": 56
                                            },
                                            "end": {
                                              "line": 110,
                                              "column": 67
                                            }
                                          },
                                          "name": "constraints"
                                        },
                                        "computed": false
                                      }
                                    ]
                                  }
                                },
                                "trailingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3927,
                                    "end": 3960,
                                    "loc": {
                                      "start": {
                                        "line": 111,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 111,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3927,
                                      3960
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3974,
                                "end": 5290,
                                "loc": {
                                  "start": {
                                    "line": 112,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 139,
                                    "column": 15
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3974,
                                  "end": 5289,
                                  "loc": {
                                    "start": {
                                      "line": 112,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 14
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3974,
                                    "end": 3977,
                                    "loc": {
                                      "start": {
                                        "line": 112,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 112,
                                        "column": 15
                                      }
                                    },
                                    "name": "add",
                                    "leadingComments": null
                                  },
                                  "right": {
                                    "type": "UnaryExpression",
                                    "start": 3980,
                                    "end": 5289,
                                    "loc": {
                                      "start": {
                                        "line": 112,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 139,
                                        "column": 14
                                      }
                                    },
                                    "operator": "!",
                                    "prefix": true,
                                    "argument": {
                                      "type": "CallExpression",
                                      "start": 3981,
                                      "end": 5289,
                                      "loc": {
                                        "start": {
                                          "line": 112,
                                          "column": 19
                                        },
                                        "end": {
                                          "line": 139,
                                          "column": 14
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3981,
                                        "end": 4000,
                                        "loc": {
                                          "start": {
                                            "line": 112,
                                            "column": 19
                                          },
                                          "end": {
                                            "line": 112,
                                            "column": 38
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3981,
                                          "end": 3995,
                                          "loc": {
                                            "start": {
                                              "line": 112,
                                              "column": 19
                                            },
                                            "end": {
                                              "line": 112,
                                              "column": 33
                                            }
                                          },
                                          "name": "allConstraints"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3996,
                                          "end": 4000,
                                          "loc": {
                                            "start": {
                                              "line": 112,
                                              "column": 34
                                            },
                                            "end": {
                                              "line": 112,
                                              "column": 38
                                            }
                                          },
                                          "name": "some"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "ArrowFunctionExpression",
                                          "start": 4001,
                                          "end": 5288,
                                          "loc": {
                                            "start": {
                                              "line": 112,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 139,
                                              "column": 13
                                            }
                                          },
                                          "id": null,
                                          "generator": false,
                                          "expression": false,
                                          "async": false,
                                          "params": [
                                            {
                                              "type": "Identifier",
                                              "start": 4002,
                                              "end": 4008,
                                              "loc": {
                                                "start": {
                                                  "line": 112,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 112,
                                                  "column": 46
                                                }
                                              },
                                              "name": "constr"
                                            }
                                          ],
                                          "body": {
                                            "type": "BlockStatement",
                                            "start": 4013,
                                            "end": 5288,
                                            "loc": {
                                              "start": {
                                                "line": 112,
                                                "column": 51
                                              },
                                              "end": {
                                                "line": 139,
                                                "column": 13
                                              }
                                            },
                                            "body": [
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 4032,
                                                "end": 4099,
                                                "loc": {
                                                  "start": {
                                                    "line": 113,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 113,
                                                    "column": 83
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4036,
                                                    "end": 4054,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 38
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4036,
                                                      "end": 4042,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 4045,
                                                      "end": 4054,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 29
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 38
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4045,
                                                        "end": 4051,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 29
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 35
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4052,
                                                        "end": 4053,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 36
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 37
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4056,
                                                    "end": 4073,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 40
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 57
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4056,
                                                      "end": 4061,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 45
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 4064,
                                                      "end": 4073,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 48
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 57
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4064,
                                                        "end": 4070,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 48
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 54
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4071,
                                                        "end": 4072,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 55
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 56
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4075,
                                                    "end": 4098,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 59
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 82
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4075,
                                                      "end": 4086,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 59
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 70
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 4089,
                                                      "end": 4098,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 73
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4089,
                                                        "end": 4095,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 73
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 79
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4096,
                                                        "end": 4097,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 80
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 81
                                                          }
                                                        },
                                                        "value": 2,
                                                        "rawValue": 2,
                                                        "raw": "2"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4117,
                                                "end": 4179,
                                                "loc": {
                                                  "start": {
                                                    "line": 114,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 115,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 4121,
                                                  "end": 4143,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 42
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 4121,
                                                    "end": 4130,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 29
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4121,
                                                      "end": 4127,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 4128,
                                                      "end": 4129,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 27
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 28
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 4135,
                                                    "end": 4143,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 42
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4135,
                                                      "end": 4140,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 34
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 39
                                                        }
                                                      },
                                                      "name": "types"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 4141,
                                                      "end": 4142,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 41
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4166,
                                                  "end": 4179,
                                                  "loc": {
                                                    "start": {
                                                      "line": 115,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 115,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4173,
                                                    "end": 4178,
                                                    "loc": {
                                                      "start": {
                                                        "line": 115,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 115,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4197,
                                                "end": 4264,
                                                "loc": {
                                                  "start": {
                                                    "line": 116,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 117,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 4201,
                                                  "end": 4228,
                                                  "loc": {
                                                    "start": {
                                                      "line": 116,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 116,
                                                      "column": 47
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 4201,
                                                    "end": 4213,
                                                    "loc": {
                                                      "start": {
                                                        "line": 116,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 116,
                                                        "column": 32
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4201,
                                                      "end": 4206,
                                                      "loc": {
                                                        "start": {
                                                          "line": 116,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 116,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4207,
                                                      "end": 4213,
                                                      "loc": {
                                                        "start": {
                                                          "line": 116,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 116,
                                                          "column": 32
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  },
                                                  "operator": "!=",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 4217,
                                                    "end": 4228,
                                                    "loc": {
                                                      "start": {
                                                        "line": 116,
                                                        "column": 36
                                                      },
                                                      "end": {
                                                        "line": 116,
                                                        "column": 47
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4217,
                                                      "end": 4221,
                                                      "loc": {
                                                        "start": {
                                                          "line": 116,
                                                          "column": 36
                                                        },
                                                        "end": {
                                                          "line": 116,
                                                          "column": 40
                                                        }
                                                      },
                                                      "name": "args"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4222,
                                                      "end": 4228,
                                                      "loc": {
                                                        "start": {
                                                          "line": 116,
                                                          "column": 41
                                                        },
                                                        "end": {
                                                          "line": 116,
                                                          "column": 47
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4251,
                                                  "end": 4264,
                                                  "loc": {
                                                    "start": {
                                                      "line": 117,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 117,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4258,
                                                    "end": 4263,
                                                    "loc": {
                                                      "start": {
                                                        "line": 117,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 117,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4282,
                                                "end": 4410,
                                                "loc": {
                                                  "start": {
                                                    "line": 118,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 119,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 4286,
                                                  "end": 4374,
                                                  "loc": {
                                                    "start": {
                                                      "line": 118,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 118,
                                                      "column": 108
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 4286,
                                                    "end": 4348,
                                                    "loc": {
                                                      "start": {
                                                        "line": 118,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 118,
                                                        "column": 82
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "LogicalExpression",
                                                      "start": 4286,
                                                      "end": 4323,
                                                      "loc": {
                                                        "start": {
                                                          "line": 118,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 118,
                                                          "column": 57
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 4286,
                                                        "end": 4302,
                                                        "loc": {
                                                          "start": {
                                                            "line": 118,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 118,
                                                            "column": 36
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4286,
                                                          "end": 4296,
                                                          "loc": {
                                                            "start": {
                                                              "line": 118,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 118,
                                                              "column": 30
                                                            }
                                                          },
                                                          "name": "attributes"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4297,
                                                          "end": 4302,
                                                          "loc": {
                                                            "start": {
                                                              "line": 118,
                                                              "column": 31
                                                            },
                                                            "end": {
                                                              "line": 118,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      },
                                                      "operator": "||",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 4306,
                                                        "end": 4323,
                                                        "loc": {
                                                          "start": {
                                                            "line": 118,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 118,
                                                            "column": 57
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4306,
                                                          "end": 4317,
                                                          "loc": {
                                                            "start": {
                                                              "line": 118,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 118,
                                                              "column": 51
                                                            }
                                                          },
                                                          "name": "attributes2"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4318,
                                                          "end": 4323,
                                                          "loc": {
                                                            "start": {
                                                              "line": 118,
                                                              "column": 52
                                                            },
                                                            "end": {
                                                              "line": 118,
                                                              "column": 57
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      }
                                                    },
                                                    "operator": "||",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 4327,
                                                      "end": 4348,
                                                      "loc": {
                                                        "start": {
                                                          "line": 118,
                                                          "column": 61
                                                        },
                                                        "end": {
                                                          "line": 118,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4327,
                                                        "end": 4337,
                                                        "loc": {
                                                          "start": {
                                                            "line": 118,
                                                            "column": 61
                                                          },
                                                          "end": {
                                                            "line": 118,
                                                            "column": 71
                                                          }
                                                        },
                                                        "name": "attributes"
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 4338,
                                                        "end": 4348,
                                                        "loc": {
                                                          "start": {
                                                            "line": 118,
                                                            "column": 72
                                                          },
                                                          "end": {
                                                            "line": 118,
                                                            "column": 82
                                                          }
                                                        },
                                                        "name": "expression"
                                                      },
                                                      "computed": false
                                                    }
                                                  },
                                                  "operator": "||",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 4352,
                                                    "end": 4374,
                                                    "loc": {
                                                      "start": {
                                                        "line": 118,
                                                        "column": 86
                                                      },
                                                      "end": {
                                                        "line": 118,
                                                        "column": 108
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4352,
                                                      "end": 4363,
                                                      "loc": {
                                                        "start": {
                                                          "line": 118,
                                                          "column": 86
                                                        },
                                                        "end": {
                                                          "line": 118,
                                                          "column": 97
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4364,
                                                      "end": 4374,
                                                      "loc": {
                                                        "start": {
                                                          "line": 118,
                                                          "column": 98
                                                        },
                                                        "end": {
                                                          "line": 118,
                                                          "column": 108
                                                        }
                                                      },
                                                      "name": "expression"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4397,
                                                  "end": 4410,
                                                  "loc": {
                                                    "start": {
                                                      "line": 119,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 119,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4404,
                                                    "end": 4409,
                                                    "loc": {
                                                      "start": {
                                                        "line": 119,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 119,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  },
                                                  "trailingComments": null
                                                },
                                                "alternate": null,
                                                "trailingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4411,
                                                    "end": 4442,
                                                    "loc": {
                                                      "start": {
                                                        "line": 119,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 119,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4411,
                                                      4442
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4462,
                                                "end": 4545,
                                                "loc": {
                                                  "start": {
                                                    "line": 121,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 122,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "CallExpression",
                                                  "start": 4466,
                                                  "end": 4510,
                                                  "loc": {
                                                    "start": {
                                                      "line": 121,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 121,
                                                      "column": 64
                                                    }
                                                  },
                                                  "callee": {
                                                    "type": "MemberExpression",
                                                    "start": 4466,
                                                    "end": 4477,
                                                    "loc": {
                                                      "start": {
                                                        "line": 121,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 121,
                                                        "column": 31
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4466,
                                                      "end": 4471,
                                                      "loc": {
                                                        "start": {
                                                          "line": 121,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 121,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2",
                                                      "leadingComments": null
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4472,
                                                      "end": 4477,
                                                      "loc": {
                                                        "start": {
                                                          "line": 121,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 121,
                                                          "column": 31
                                                        }
                                                      },
                                                      "name": "every"
                                                    },
                                                    "computed": false,
                                                    "leadingComments": null
                                                  },
                                                  "arguments": [
                                                    {
                                                      "type": "ArrowFunctionExpression",
                                                      "start": 4478,
                                                      "end": 4509,
                                                      "loc": {
                                                        "start": {
                                                          "line": 121,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 121,
                                                          "column": 63
                                                        }
                                                      },
                                                      "id": null,
                                                      "generator": false,
                                                      "expression": true,
                                                      "async": false,
                                                      "params": [
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4479,
                                                          "end": 4482,
                                                          "loc": {
                                                            "start": {
                                                              "line": 121,
                                                              "column": 33
                                                            },
                                                            "end": {
                                                              "line": 121,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4484,
                                                          "end": 4487,
                                                          "loc": {
                                                            "start": {
                                                              "line": 121,
                                                              "column": 38
                                                            },
                                                            "end": {
                                                              "line": 121,
                                                              "column": 41
                                                            }
                                                          },
                                                          "name": "idx"
                                                        }
                                                      ],
                                                      "body": {
                                                        "type": "BinaryExpression",
                                                        "start": 4492,
                                                        "end": 4509,
                                                        "loc": {
                                                          "start": {
                                                            "line": 121,
                                                            "column": 46
                                                          },
                                                          "end": {
                                                            "line": 121,
                                                            "column": 63
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "Identifier",
                                                          "start": 4492,
                                                          "end": 4495,
                                                          "loc": {
                                                            "start": {
                                                              "line": 121,
                                                              "column": 46
                                                            },
                                                            "end": {
                                                              "line": 121,
                                                              "column": 49
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        "operator": "===",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 4500,
                                                          "end": 4509,
                                                          "loc": {
                                                            "start": {
                                                              "line": 121,
                                                              "column": 54
                                                            },
                                                            "end": {
                                                              "line": 121,
                                                              "column": 63
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 4500,
                                                            "end": 4504,
                                                            "loc": {
                                                              "start": {
                                                                "line": 121,
                                                                "column": 54
                                                              },
                                                              "end": {
                                                                "line": 121,
                                                                "column": 58
                                                              }
                                                            },
                                                            "name": "args"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 4505,
                                                            "end": 4508,
                                                            "loc": {
                                                              "start": {
                                                                "line": 121,
                                                                "column": 59
                                                              },
                                                              "end": {
                                                                "line": 121,
                                                                "column": 62
                                                              }
                                                            },
                                                            "name": "idx"
                                                          },
                                                          "computed": true
                                                        }
                                                      }
                                                    }
                                                  ],
                                                  "leadingComments": null
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4533,
                                                  "end": 4545,
                                                  "loc": {
                                                    "start": {
                                                      "line": 122,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 122,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4540,
                                                    "end": 4544,
                                                    "loc": {
                                                      "start": {
                                                        "line": 122,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 122,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null,
                                                "leadingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4411,
                                                    "end": 4442,
                                                    "loc": {
                                                      "start": {
                                                        "line": 119,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 119,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4411,
                                                      4442
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 4565,
                                                "end": 5093,
                                                "loc": {
                                                  "start": {
                                                    "line": 124,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 134,
                                                    "column": 37
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4569,
                                                    "end": 5092,
                                                    "loc": {
                                                      "start": {
                                                        "line": 124,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 134,
                                                        "column": 36
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4569,
                                                      "end": 4586,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 124,
                                                          "column": 37
                                                        }
                                                      },
                                                      "name": "binaryCommutative"
                                                    },
                                                    "init": {
                                                      "type": "CallExpression",
                                                      "start": 4589,
                                                      "end": 5092,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 134,
                                                          "column": 36
                                                        }
                                                      },
                                                      "callee": {
                                                        "type": "MemberExpression",
                                                        "start": 4589,
                                                        "end": 5077,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 134,
                                                            "column": 21
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "ArrayExpression",
                                                          "start": 4589,
                                                          "end": 5073,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 134,
                                                              "column": 17
                                                            }
                                                          },
                                                          "elements": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4612,
                                                              "end": 4637,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 125,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 125,
                                                                  "column": 45
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4612,
                                                                "end": 4627,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 125,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 125,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4612,
                                                                  "end": 4622,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 125,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 125,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4623,
                                                                  "end": 4627,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 125,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 125,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4628,
                                                                "end": 4637,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 125,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 125,
                                                                    "column": 45
                                                                  }
                                                                },
                                                                "name": "INCIDENCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4660,
                                                              "end": 4684,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 126,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 126,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4660,
                                                                "end": 4675,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 126,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 126,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4660,
                                                                  "end": 4670,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 126,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 126,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4671,
                                                                  "end": 4675,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 126,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 126,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4676,
                                                                "end": 4684,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 126,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 126,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "DISTANCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4707,
                                                              "end": 4728,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 127,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 127,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4707,
                                                                "end": 4722,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 127,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 127,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4707,
                                                                  "end": 4717,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 127,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 127,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4718,
                                                                  "end": 4722,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 127,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 127,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4723,
                                                                "end": 4728,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 127,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 127,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "ANGLE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4751,
                                                              "end": 4775,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 128,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 128,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4751,
                                                                "end": 4766,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 128,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 128,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4751,
                                                                  "end": 4761,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 128,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 128,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4762,
                                                                  "end": 4766,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 128,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 128,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4767,
                                                                "end": 4775,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 128,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 128,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "TANGENCY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4798,
                                                              "end": 4830,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 129,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 129,
                                                                  "column": 52
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4798,
                                                                "end": 4813,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 129,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 129,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4798,
                                                                  "end": 4808,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 129,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 129,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4809,
                                                                  "end": 4813,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 129,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 129,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4814,
                                                                "end": 4830,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 129,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 129,
                                                                    "column": 52
                                                                  }
                                                                },
                                                                "name": "PERPENDICULARITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4853,
                                                              "end": 4880,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 130,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 130,
                                                                  "column": 47
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4853,
                                                                "end": 4868,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 130,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 130,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4853,
                                                                  "end": 4863,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 130,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 130,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4864,
                                                                  "end": 4868,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 130,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 130,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4869,
                                                                "end": 4880,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 130,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 130,
                                                                    "column": 47
                                                                  }
                                                                },
                                                                "name": "PARALLELITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4903,
                                                              "end": 4929,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 131,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 131,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4903,
                                                                "end": 4918,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 131,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 131,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4903,
                                                                  "end": 4913,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 131,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 131,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4914,
                                                                  "end": 4918,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 131,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 131,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4919,
                                                                "end": 4929,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 131,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 131,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "CONCENTRIC"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4952,
                                                              "end": 4976,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 132,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 132,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4952,
                                                                "end": 4967,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 132,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 132,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4952,
                                                                  "end": 4962,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 132,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 132,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4963,
                                                                  "end": 4967,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 132,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 132,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4968,
                                                                "end": 4976,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 132,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 132,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "COLINEAR"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 5014,
                                                              "end": 5042,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 133,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 133,
                                                                  "column": 48
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 5014,
                                                                "end": 5029,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 133,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 133,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 5014,
                                                                  "end": 5024,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 133,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 133,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint",
                                                                  "leadingComments": null
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 5025,
                                                                  "end": 5029,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 133,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 133,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false,
                                                                "leadingComments": null
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 5030,
                                                                "end": 5042,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 133,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 133,
                                                                    "column": 48
                                                                  }
                                                                },
                                                                "name": "EQUAL_RADIUS",
                                                                "leadingComments": null,
                                                                "trailingComments": null
                                                              },
                                                              "computed": false,
                                                              "leadingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 4982,
                                                                  "end": 4992,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 132,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 132,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    4982,
                                                                    4992
                                                                  ]
                                                                }
                                                              ],
                                                              "trailingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 5044,
                                                                  "end": 5054,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 133,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 133,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    5044,
                                                                    5054
                                                                  ]
                                                                }
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 5074,
                                                          "end": 5077,
                                                          "loc": {
                                                            "start": {
                                                              "line": 134,
                                                              "column": 18
                                                            },
                                                            "end": {
                                                              "line": 134,
                                                              "column": 21
                                                            }
                                                          },
                                                          "name": "map",
                                                          "leadingComments": [
                                                            {
                                                              "type": "CommentLine",
                                                              "value": "not sure",
                                                              "start": 5044,
                                                              "end": 5054,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 133,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 133,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "range": [
                                                                5044,
                                                                5054
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "computed": false
                                                      },
                                                      "arguments": [
                                                        {
                                                          "type": "ArrowFunctionExpression",
                                                          "start": 5078,
                                                          "end": 5091,
                                                          "loc": {
                                                            "start": {
                                                              "line": 134,
                                                              "column": 22
                                                            },
                                                            "end": {
                                                              "line": 134,
                                                              "column": 35
                                                            }
                                                          },
                                                          "id": null,
                                                          "generator": false,
                                                          "expression": true,
                                                          "async": false,
                                                          "params": [
                                                            {
                                                              "type": "Identifier",
                                                              "start": 5078,
                                                              "end": 5081,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 134,
                                                                  "column": 22
                                                                },
                                                                "end": {
                                                                  "line": 134,
                                                                  "column": 25
                                                                }
                                                              },
                                                              "name": "obj"
                                                            }
                                                          ],
                                                          "body": {
                                                            "type": "MemberExpression",
                                                            "start": 5085,
                                                            "end": 5091,
                                                            "loc": {
                                                              "start": {
                                                                "line": 134,
                                                                "column": 29
                                                              },
                                                              "end": {
                                                                "line": 134,
                                                                "column": 35
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 5085,
                                                              "end": 5088,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 134,
                                                                  "column": 29
                                                                },
                                                                "end": {
                                                                  "line": 134,
                                                                  "column": 32
                                                                }
                                                              },
                                                              "name": "obj"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 5089,
                                                              "end": 5090,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 134,
                                                                  "column": 33
                                                                },
                                                                "end": {
                                                                  "line": 134,
                                                                  "column": 34
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 5111,
                                                "end": 5240,
                                                "loc": {
                                                  "start": {
                                                    "line": 135,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 136,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 5115,
                                                  "end": 5205,
                                                  "loc": {
                                                    "start": {
                                                      "line": 135,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 135,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 5115,
                                                    "end": 5181,
                                                    "loc": {
                                                      "start": {
                                                        "line": 135,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 135,
                                                        "column": 86
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "BinaryExpression",
                                                      "start": 5115,
                                                      "end": 5157,
                                                      "loc": {
                                                        "start": {
                                                          "line": 135,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 135,
                                                          "column": 62
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "CallExpression",
                                                        "start": 5115,
                                                        "end": 5150,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 55
                                                          }
                                                        },
                                                        "callee": {
                                                          "type": "MemberExpression",
                                                          "start": 5115,
                                                          "end": 5140,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 45
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 5115,
                                                            "end": 5132,
                                                            "loc": {
                                                              "start": {
                                                                "line": 135,
                                                                "column": 20
                                                              },
                                                              "end": {
                                                                "line": 135,
                                                                "column": 37
                                                              }
                                                            },
                                                            "name": "binaryCommutative"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 5133,
                                                            "end": 5140,
                                                            "loc": {
                                                              "start": {
                                                                "line": 135,
                                                                "column": 38
                                                              },
                                                              "end": {
                                                                "line": 135,
                                                                "column": 45
                                                              }
                                                            },
                                                            "name": "indexOf"
                                                          },
                                                          "computed": false
                                                        },
                                                        "arguments": [
                                                          {
                                                            "type": "MemberExpression",
                                                            "start": 5141,
                                                            "end": 5149,
                                                            "loc": {
                                                              "start": {
                                                                "line": 135,
                                                                "column": 46
                                                              },
                                                              "end": {
                                                                "line": 135,
                                                                "column": 54
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 5141,
                                                              "end": 5146,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 135,
                                                                  "column": 46
                                                                },
                                                                "end": {
                                                                  "line": 135,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "types"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 5147,
                                                              "end": 5148,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 135,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 135,
                                                                  "column": 53
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        ]
                                                      },
                                                      "operator": "!==",
                                                      "right": {
                                                        "type": "UnaryExpression",
                                                        "start": 5155,
                                                        "end": 5157,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 60
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 62
                                                          }
                                                        },
                                                        "operator": "-",
                                                        "prefix": true,
                                                        "argument": {
                                                          "type": "Literal",
                                                          "start": 5156,
                                                          "end": 5157,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 61
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 62
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        }
                                                      }
                                                    },
                                                    "operator": "&&",
                                                    "right": {
                                                      "type": "BinaryExpression",
                                                      "start": 5161,
                                                      "end": 5181,
                                                      "loc": {
                                                        "start": {
                                                          "line": 135,
                                                          "column": 66
                                                        },
                                                        "end": {
                                                          "line": 135,
                                                          "column": 86
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 5161,
                                                        "end": 5168,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 66
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 73
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 5161,
                                                          "end": 5165,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 66
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 70
                                                            }
                                                          },
                                                          "name": "args"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 5166,
                                                          "end": 5167,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 72
                                                            }
                                                          },
                                                          "value": 0,
                                                          "rawValue": 0,
                                                          "raw": "0"
                                                        },
                                                        "computed": true
                                                      },
                                                      "operator": "===",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 5173,
                                                        "end": 5181,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 78
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 86
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 5173,
                                                          "end": 5178,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 78
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 83
                                                            }
                                                          },
                                                          "name": "args2"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 5179,
                                                          "end": 5180,
                                                          "loc": {
                                                            "start": {
                                                              "line": 135,
                                                              "column": 84
                                                            },
                                                            "end": {
                                                              "line": 135,
                                                              "column": 85
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        },
                                                        "computed": true
                                                      }
                                                    }
                                                  },
                                                  "operator": "&&",
                                                  "right": {
                                                    "type": "BinaryExpression",
                                                    "start": 5185,
                                                    "end": 5205,
                                                    "loc": {
                                                      "start": {
                                                        "line": 135,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 135,
                                                        "column": 110
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "MemberExpression",
                                                      "start": 5185,
                                                      "end": 5192,
                                                      "loc": {
                                                        "start": {
                                                          "line": 135,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 135,
                                                          "column": 97
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 5185,
                                                        "end": 5189,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 90
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 94
                                                          }
                                                        },
                                                        "name": "args"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 5190,
                                                        "end": 5191,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 95
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 96
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    },
                                                    "operator": "===",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 5197,
                                                      "end": 5205,
                                                      "loc": {
                                                        "start": {
                                                          "line": 135,
                                                          "column": 102
                                                        },
                                                        "end": {
                                                          "line": 135,
                                                          "column": 110
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 5197,
                                                        "end": 5202,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 102
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 107
                                                          }
                                                        },
                                                        "name": "args2"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 5203,
                                                        "end": 5204,
                                                        "loc": {
                                                          "start": {
                                                            "line": 135,
                                                            "column": 108
                                                          },
                                                          "end": {
                                                            "line": 135,
                                                            "column": 109
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 5228,
                                                  "end": 5240,
                                                  "loc": {
                                                    "start": {
                                                      "line": 136,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 136,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 5235,
                                                    "end": 5239,
                                                    "loc": {
                                                      "start": {
                                                        "line": 136,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 136,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "ReturnStatement",
                                                "start": 5260,
                                                "end": 5273,
                                                "loc": {
                                                  "start": {
                                                    "line": 138,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 138,
                                                    "column": 29
                                                  }
                                                },
                                                "argument": {
                                                  "type": "Literal",
                                                  "start": 5267,
                                                  "end": 5272,
                                                  "loc": {
                                                    "start": {
                                                      "line": 138,
                                                      "column": 23
                                                    },
                                                    "end": {
                                                      "line": 138,
                                                      "column": 28
                                                    }
                                                  },
                                                  "value": false,
                                                  "rawValue": false,
                                                  "raw": "false"
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "leadingComments": null
                                },
                                "leadingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3927,
                                    "end": 3960,
                                    "loc": {
                                      "start": {
                                        "line": 111,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 111,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3927,
                                      3960
                                    ]
                                  }
                                ]
                              }
                            ],
                            "trailingComments": null
                          },
                          "trailingComments": null
                        },
                        "trailingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "if the new constraint is not excessive, then take it into account",
                          "start": 2640,
                          "end": 2707,
                          "loc": {
                            "start": {
                              "line": 85,
                              "column": 8
                            },
                            "end": {
                              "line": 85,
                              "column": 75
                            }
                          },
                          "range": [
                            2640,
                            2707
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 5311,
                          "end": 5334,
                          "loc": {
                            "start": {
                              "line": 141,
                              "column": 8
                            },
                            "end": {
                              "line": 141,
                              "column": 31
                            }
                          },
                          "range": [
                            5311,
                            5334
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 5344,
                      "end": 5415,
                      "loc": {
                        "start": {
                          "line": 142,
                          "column": 8
                        },
                        "end": {
                          "line": 143,
                          "column": 61
                        }
                      },
                      "test": {
                        "type": "Identifier",
                        "start": 5348,
                        "end": 5351,
                        "loc": {
                          "start": {
                            "line": 142,
                            "column": 12
                          },
                          "end": {
                            "line": 142,
                            "column": 15
                          }
                        },
                        "name": "add",
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 5366,
                        "end": 5415,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 12
                          },
                          "end": {
                            "line": 143,
                            "column": 61
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 5366,
                          "end": 5414,
                          "loc": {
                            "start": {
                              "line": 143,
                              "column": 12
                            },
                            "end": {
                              "line": 143,
                              "column": 60
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 5366,
                            "end": 5387,
                            "loc": {
                              "start": {
                                "line": 143,
                                "column": 12
                              },
                              "end": {
                                "line": 143,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 5366,
                              "end": 5382,
                              "loc": {
                                "start": {
                                  "line": 143,
                                  "column": 12
                                },
                                "end": {
                                  "line": 143,
                                  "column": 28
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 5366,
                                "end": 5370,
                                "loc": {
                                  "start": {
                                    "line": 143,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 143,
                                    "column": 16
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 5371,
                                "end": 5382,
                                "loc": {
                                  "start": {
                                    "line": 143,
                                    "column": 17
                                  },
                                  "end": {
                                    "line": 143,
                                    "column": 28
                                  }
                                },
                                "name": "constraints"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5383,
                              "end": 5387,
                              "loc": {
                                "start": {
                                  "line": 143,
                                  "column": 29
                                },
                                "end": {
                                  "line": 143,
                                  "column": 33
                                }
                              },
                              "name": "push"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "ArrayExpression",
                              "start": 5388,
                              "end": 5413,
                              "loc": {
                                "start": {
                                  "line": 143,
                                  "column": 34
                                },
                                "end": {
                                  "line": 143,
                                  "column": 59
                                }
                              },
                              "elements": [
                                {
                                  "type": "Identifier",
                                  "start": 5389,
                                  "end": 5394,
                                  "loc": {
                                    "start": {
                                      "line": 143,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 143,
                                      "column": 40
                                    }
                                  },
                                  "name": "types"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5396,
                                  "end": 5400,
                                  "loc": {
                                    "start": {
                                      "line": 143,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 143,
                                      "column": 46
                                    }
                                  },
                                  "name": "args"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5402,
                                  "end": 5412,
                                  "loc": {
                                    "start": {
                                      "line": 143,
                                      "column": 48
                                    },
                                    "end": {
                                      "line": 143,
                                      "column": 58
                                    }
                                  },
                                  "name": "attributes"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      "alternate": null,
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 5311,
                          "end": 5334,
                          "loc": {
                            "start": {
                              "line": 141,
                              "column": 8
                            },
                            "end": {
                              "line": 141,
                              "column": 31
                            }
                          },
                          "range": [
                            5311,
                            5334
                          ]
                        }
                      ]
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "add new constraint to internal buffer (if it is not excessive)",
                  "start": 2504,
                  "end": 2568,
                  "loc": {
                    "start": {
                      "line": 82,
                      "column": 4
                    },
                    "end": {
                      "line": 82,
                      "column": 68
                    }
                  },
                  "range": [
                    2504,
                    2568
                  ]
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5430,
                  "end": 5497,
                  "loc": {
                    "start": {
                      "line": 146,
                      "column": 4
                    },
                    "end": {
                      "line": 146,
                      "column": 71
                    }
                  },
                  "range": [
                    5430,
                    5497
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 5503,
              "end": 5773,
              "loc": {
                "start": {
                  "line": 147,
                  "column": 4
                },
                "end": {
                  "line": 155,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5503,
                "end": 5509,
                "loc": {
                  "start": {
                    "line": 147,
                    "column": 4
                  },
                  "end": {
                    "line": 147,
                    "column": 10
                  }
                },
                "name": "commit",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 5509,
                "end": 5773,
                "loc": {
                  "start": {
                    "line": 147,
                    "column": 10
                  },
                  "end": {
                    "line": 155,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 5512,
                  "end": 5773,
                  "loc": {
                    "start": {
                      "line": 147,
                      "column": 13
                    },
                    "end": {
                      "line": 155,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 5523,
                      "end": 5544,
                      "loc": {
                        "start": {
                          "line": 148,
                          "column": 8
                        },
                        "end": {
                          "line": 148,
                          "column": 29
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 5527,
                          "end": 5543,
                          "loc": {
                            "start": {
                              "line": 148,
                              "column": 12
                            },
                            "end": {
                              "line": 148,
                              "column": 28
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 5527,
                            "end": 5538,
                            "loc": {
                              "start": {
                                "line": 148,
                                "column": 12
                              },
                              "end": {
                                "line": 148,
                                "column": 23
                              }
                            },
                            "name": "constraints"
                          },
                          "init": {
                            "type": "ArrayExpression",
                            "start": 5541,
                            "end": 5543,
                            "loc": {
                              "start": {
                                "line": 148,
                                "column": 26
                              },
                              "end": {
                                "line": 148,
                                "column": 28
                              }
                            },
                            "elements": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5554,
                      "end": 5705,
                      "loc": {
                        "start": {
                          "line": 149,
                          "column": 8
                        },
                        "end": {
                          "line": 152,
                          "column": 11
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 5554,
                        "end": 5704,
                        "loc": {
                          "start": {
                            "line": 149,
                            "column": 8
                          },
                          "end": {
                            "line": 152,
                            "column": 10
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 5554,
                          "end": 5578,
                          "loc": {
                            "start": {
                              "line": 149,
                              "column": 8
                            },
                            "end": {
                              "line": 149,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 5554,
                            "end": 5570,
                            "loc": {
                              "start": {
                                "line": 149,
                                "column": 8
                              },
                              "end": {
                                "line": 149,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 5554,
                              "end": 5558,
                              "loc": {
                                "start": {
                                  "line": 149,
                                  "column": 8
                                },
                                "end": {
                                  "line": 149,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5559,
                              "end": 5570,
                              "loc": {
                                "start": {
                                  "line": 149,
                                  "column": 13
                                },
                                "end": {
                                  "line": 149,
                                  "column": 24
                                }
                              },
                              "name": "constraints"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5571,
                            "end": 5578,
                            "loc": {
                              "start": {
                                "line": 149,
                                "column": 25
                              },
                              "end": {
                                "line": 149,
                                "column": 32
                              }
                            },
                            "name": "forEach"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ArrowFunctionExpression",
                            "start": 5579,
                            "end": 5703,
                            "loc": {
                              "start": {
                                "line": 149,
                                "column": 33
                              },
                              "end": {
                                "line": 152,
                                "column": 9
                              }
                            },
                            "id": null,
                            "generator": false,
                            "expression": false,
                            "async": false,
                            "params": [
                              {
                                "type": "Identifier",
                                "start": 5579,
                                "end": 5582,
                                "loc": {
                                  "start": {
                                    "line": 149,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 149,
                                    "column": 36
                                  }
                                },
                                "name": "obj"
                              }
                            ],
                            "body": {
                              "type": "BlockStatement",
                              "start": 5586,
                              "end": 5703,
                              "loc": {
                                "start": {
                                  "line": 149,
                                  "column": 40
                                },
                                "end": {
                                  "line": 152,
                                  "column": 9
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 5601,
                                  "end": 5653,
                                  "loc": {
                                    "start": {
                                      "line": 150,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 150,
                                      "column": 64
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 5605,
                                      "end": 5652,
                                      "loc": {
                                        "start": {
                                          "line": 150,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 150,
                                          "column": 63
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 5605,
                                        "end": 5611,
                                        "loc": {
                                          "start": {
                                            "line": 150,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 150,
                                            "column": 22
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "init": {
                                        "type": "NewExpression",
                                        "start": 5614,
                                        "end": 5652,
                                        "loc": {
                                          "start": {
                                            "line": 150,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 150,
                                            "column": 63
                                          }
                                        },
                                        "callee": {
                                          "type": "Identifier",
                                          "start": 5618,
                                          "end": 5628,
                                          "loc": {
                                            "start": {
                                              "line": 150,
                                              "column": 29
                                            },
                                            "end": {
                                              "line": 150,
                                              "column": 39
                                            }
                                          },
                                          "name": "Constraint"
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 5629,
                                            "end": 5635,
                                            "loc": {
                                              "start": {
                                                "line": 150,
                                                "column": 40
                                              },
                                              "end": {
                                                "line": 150,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5629,
                                              "end": 5632,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 43
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5633,
                                              "end": 5634,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5637,
                                            "end": 5643,
                                            "loc": {
                                              "start": {
                                                "line": 150,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 150,
                                                "column": 54
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5637,
                                              "end": 5640,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 51
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5641,
                                              "end": 5642,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 52
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 53
                                                }
                                              },
                                              "value": 1,
                                              "rawValue": 1,
                                              "raw": "1"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5645,
                                            "end": 5651,
                                            "loc": {
                                              "start": {
                                                "line": 150,
                                                "column": 56
                                              },
                                              "end": {
                                                "line": 150,
                                                "column": 62
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5645,
                                              "end": 5648,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 56
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 59
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5649,
                                              "end": 5650,
                                              "loc": {
                                                "start": {
                                                  "line": 150,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 150,
                                                  "column": 61
                                                }
                                              },
                                              "value": 2,
                                              "rawValue": 2,
                                              "raw": "2"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ],
                                  "kind": "var"
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5667,
                                  "end": 5692,
                                  "loc": {
                                    "start": {
                                      "line": 151,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 151,
                                      "column": 37
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 5667,
                                    "end": 5691,
                                    "loc": {
                                      "start": {
                                        "line": 151,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 151,
                                        "column": 36
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 5667,
                                      "end": 5683,
                                      "loc": {
                                        "start": {
                                          "line": 151,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 151,
                                          "column": 28
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 5667,
                                        "end": 5678,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 23
                                          }
                                        },
                                        "name": "constraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5679,
                                        "end": 5683,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 24
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 28
                                          }
                                        },
                                        "name": "push"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Identifier",
                                        "start": 5684,
                                        "end": 5690,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 35
                                          }
                                        },
                                        "name": "constr"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5715,
                      "end": 5737,
                      "loc": {
                        "start": {
                          "line": 153,
                          "column": 8
                        },
                        "end": {
                          "line": 153,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5715,
                        "end": 5736,
                        "loc": {
                          "start": {
                            "line": 153,
                            "column": 8
                          },
                          "end": {
                            "line": 153,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5715,
                          "end": 5731,
                          "loc": {
                            "start": {
                              "line": 153,
                              "column": 8
                            },
                            "end": {
                              "line": 153,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5715,
                            "end": 5719,
                            "loc": {
                              "start": {
                                "line": 153,
                                "column": 8
                              },
                              "end": {
                                "line": 153,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5720,
                            "end": 5731,
                            "loc": {
                              "start": {
                                "line": 153,
                                "column": 13
                              },
                              "end": {
                                "line": 153,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 5734,
                          "end": 5736,
                          "loc": {
                            "start": {
                              "line": 153,
                              "column": 27
                            },
                            "end": {
                              "line": 153,
                              "column": 29
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 5747,
                      "end": 5766,
                      "loc": {
                        "start": {
                          "line": 154,
                          "column": 8
                        },
                        "end": {
                          "line": 154,
                          "column": 27
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 5754,
                        "end": 5765,
                        "loc": {
                          "start": {
                            "line": 154,
                            "column": 15
                          },
                          "end": {
                            "line": 154,
                            "column": 26
                          }
                        },
                        "name": "constraints"
                      }
                    }
                  ]
                }
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5430,
                  "end": 5497,
                  "loc": {
                    "start": {
                      "line": 146,
                      "column": 4
                    },
                    "end": {
                      "line": 146,
                      "column": 71
                    }
                  },
                  "range": [
                    5430,
                    5497
                  ]
                }
              ]
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Constraints adder ========================",
            "start": 1205,
            "end": 1272,
            "loc": {
              "start": {
                "line": 50,
                "column": 0
              },
              "end": {
                "line": 50,
                "column": 67
              }
            },
            "range": [
              1205,
              1272
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5780,
            "end": 5859,
            "loc": {
              "start": {
                "line": 158,
                "column": 0
              },
              "end": {
                "line": 158,
                "column": 79
              }
            },
            "range": [
              5780,
              5859
            ]
          },
          {
            "type": "Block",
            "value": "\r\n * ConstraintGenerator - an object that generates implied constraints for some sketch\r\n ",
            "start": 5861,
            "end": 5955,
            "loc": {
              "start": {
                "line": 159,
                "column": 0
              },
              "end": {
                "line": 161,
                "column": 3
              }
            },
            "range": [
              5861,
              5955
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 1205,
          "end": 1272,
          "loc": {
            "start": {
              "line": 50,
              "column": 0
            },
            "end": {
              "line": 50,
              "column": 67
            }
          },
          "range": [
            1205,
            1272
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5780,
          "end": 5859,
          "loc": {
            "start": {
              "line": 158,
              "column": 0
            },
            "end": {
              "line": 158,
              "column": 79
            }
          },
          "range": [
            5780,
            5859
          ]
        },
        {
          "type": "Block",
          "value": "\r\n * ConstraintGenerator - an object that generates implied constraints for some sketch\r\n ",
          "start": 5861,
          "end": 5955,
          "loc": {
            "start": {
              "line": 159,
              "column": 0
            },
            "end": {
              "line": 161,
              "column": 3
            }
          },
          "range": [
            5861,
            5955
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 5957,
      "end": 9257,
      "loc": {
        "start": {
          "line": 162,
          "column": 0
        },
        "end": {
          "line": 230,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 5964,
        "end": 9257,
        "loc": {
          "start": {
            "line": 162,
            "column": 7
          },
          "end": {
            "line": 230,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 5970,
          "end": 5989,
          "loc": {
            "start": {
              "line": 162,
              "column": 13
            },
            "end": {
              "line": 162,
              "column": 32
            }
          },
          "name": "ConstraintGenerator",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 5990,
          "end": 9257,
          "loc": {
            "start": {
              "line": 162,
              "column": 33
            },
            "end": {
              "line": 230,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 5997,
              "end": 6411,
              "loc": {
                "start": {
                  "line": 163,
                  "column": 4
                },
                "end": {
                  "line": 177,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5997,
                "end": 6008,
                "loc": {
                  "start": {
                    "line": 163,
                    "column": 4
                  },
                  "end": {
                    "line": 163,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 6008,
                "end": 6411,
                "loc": {
                  "start": {
                    "line": 163,
                    "column": 15
                  },
                  "end": {
                    "line": 177,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 6009,
                    "end": 6015,
                    "loc": {
                      "start": {
                        "line": 163,
                        "column": 16
                      },
                      "end": {
                        "line": 163,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 6017,
                  "end": 6411,
                  "loc": {
                    "start": {
                      "line": 163,
                      "column": 24
                    },
                    "end": {
                      "line": 177,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 6028,
                      "end": 6049,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 8
                        },
                        "end": {
                          "line": 164,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 6028,
                        "end": 6048,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 8
                          },
                          "end": {
                            "line": 164,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 6028,
                          "end": 6039,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 8
                            },
                            "end": {
                              "line": 164,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 6028,
                            "end": 6032,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 8
                              },
                              "end": {
                                "line": 164,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6033,
                            "end": 6039,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 13
                              },
                              "end": {
                                "line": 164,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 6042,
                          "end": 6048,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 22
                            },
                            "end": {
                              "line": 164,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 6061,
                          "end": 6090,
                          "loc": {
                            "start": {
                              "line": 166,
                              "column": 8
                            },
                            "end": {
                              "line": 166,
                              "column": 37
                            }
                          },
                          "range": [
                            6061,
                            6090
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 6100,
                      "end": 6265,
                      "loc": {
                        "start": {
                          "line": 167,
                          "column": 8
                        },
                        "end": {
                          "line": 172,
                          "column": 10
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 6100,
                        "end": 6264,
                        "loc": {
                          "start": {
                            "line": 167,
                            "column": 8
                          },
                          "end": {
                            "line": 172,
                            "column": 9
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 6100,
                          "end": 6113,
                          "loc": {
                            "start": {
                              "line": 167,
                              "column": 8
                            },
                            "end": {
                              "line": 167,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 6100,
                            "end": 6104,
                            "loc": {
                              "start": {
                                "line": 167,
                                "column": 8
                              },
                              "end": {
                                "line": 167,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6105,
                            "end": 6113,
                            "loc": {
                              "start": {
                                "line": 167,
                                "column": 13
                              },
                              "end": {
                                "line": 167,
                                "column": 21
                              }
                            },
                            "name": "generate"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 6116,
                          "end": 6264,
                          "loc": {
                            "start": {
                              "line": 167,
                              "column": 24
                            },
                            "end": {
                              "line": 172,
                              "column": 9
                            }
                          },
                          "properties": [
                            {
                              "type": "Property",
                              "start": 6131,
                              "end": 6151,
                              "loc": {
                                "start": {
                                  "line": 168,
                                  "column": 12
                                },
                                "end": {
                                  "line": 168,
                                  "column": 32
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 6131,
                                "end": 6144,
                                "loc": {
                                  "start": {
                                    "line": 168,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 168,
                                    "column": 25
                                  }
                                },
                                "name": "horizontality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 6147,
                                "end": 6151,
                                "loc": {
                                  "start": {
                                    "line": 168,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 168,
                                    "column": 32
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 6166,
                              "end": 6184,
                              "loc": {
                                "start": {
                                  "line": 169,
                                  "column": 12
                                },
                                "end": {
                                  "line": 169,
                                  "column": 30
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 6166,
                                "end": 6177,
                                "loc": {
                                  "start": {
                                    "line": 169,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 169,
                                    "column": 23
                                  }
                                },
                                "name": "verticality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 6180,
                                "end": 6184,
                                "loc": {
                                  "start": {
                                    "line": 169,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 169,
                                    "column": 30
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 6199,
                              "end": 6222,
                              "loc": {
                                "start": {
                                  "line": 170,
                                  "column": 12
                                },
                                "end": {
                                  "line": 170,
                                  "column": 35
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 6199,
                                "end": 6215,
                                "loc": {
                                  "start": {
                                    "line": 170,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 170,
                                    "column": 28
                                  }
                                },
                                "name": "pointCoincidence"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 6218,
                                "end": 6222,
                                "loc": {
                                  "start": {
                                    "line": 170,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 170,
                                    "column": 35
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 6237,
                              "end": 6252,
                              "loc": {
                                "start": {
                                  "line": 171,
                                  "column": 12
                                },
                                "end": {
                                  "line": 171,
                                  "column": 27
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 6237,
                                "end": 6245,
                                "loc": {
                                  "start": {
                                    "line": 171,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 171,
                                    "column": 20
                                  }
                                },
                                "name": "tangency"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 6248,
                                "end": 6252,
                                "loc": {
                                  "start": {
                                    "line": 171,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 171,
                                    "column": 27
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 6061,
                          "end": 6090,
                          "loc": {
                            "start": {
                              "line": 166,
                              "column": 8
                            },
                            "end": {
                              "line": 166,
                              "column": 37
                            }
                          },
                          "range": [
                            6061,
                            6090
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "note: it should be static, but ES6 is against it",
                          "start": 6277,
                          "end": 6327,
                          "loc": {
                            "start": {
                              "line": 174,
                              "column": 8
                            },
                            "end": {
                              "line": 174,
                              "column": 58
                            }
                          },
                          "range": [
                            6277,
                            6327
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 6337,
                      "end": 6366,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 8
                        },
                        "end": {
                          "line": 175,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 6337,
                        "end": 6365,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 8
                          },
                          "end": {
                            "line": 175,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 6337,
                          "end": 6358,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 8
                            },
                            "end": {
                              "line": 175,
                              "column": 29
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 6337,
                            "end": 6341,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 8
                              },
                              "end": {
                                "line": 175,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6342,
                            "end": 6358,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 13
                              },
                              "end": {
                                "line": 175,
                                "column": 29
                              }
                            },
                            "name": "angularTolerance"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Literal",
                          "start": 6361,
                          "end": 6365,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 32
                            },
                            "end": {
                              "line": 175,
                              "column": 36
                            }
                          },
                          "value": 0.000001,
                          "rawValue": 0.000001,
                          "raw": "1e-6"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "note: it should be static, but ES6 is against it",
                          "start": 6277,
                          "end": 6327,
                          "loc": {
                            "start": {
                              "line": 174,
                              "column": 8
                            },
                            "end": {
                              "line": 174,
                              "column": 58
                            }
                          },
                          "range": [
                            6277,
                            6327
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 6376,
                      "end": 6404,
                      "loc": {
                        "start": {
                          "line": 176,
                          "column": 8
                        },
                        "end": {
                          "line": 176,
                          "column": 36
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 6376,
                        "end": 6403,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 8
                          },
                          "end": {
                            "line": 176,
                            "column": 35
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 6376,
                          "end": 6396,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 8
                            },
                            "end": {
                              "line": 176,
                              "column": 28
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 6376,
                            "end": 6380,
                            "loc": {
                              "start": {
                                "line": 176,
                                "column": 8
                              },
                              "end": {
                                "line": 176,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6381,
                            "end": 6396,
                            "loc": {
                              "start": {
                                "line": 176,
                                "column": 13
                              },
                              "end": {
                                "line": 176,
                                "column": 28
                              }
                            },
                            "name": "linearTolerance"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Literal",
                          "start": 6399,
                          "end": 6403,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 31
                            },
                            "end": {
                              "line": 176,
                              "column": 35
                            }
                          },
                          "value": 0.000001,
                          "rawValue": 0.000001,
                          "raw": "1e-6"
                        }
                      }
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": "if relatedTo is set, then only constraints which are somehow related to objects from [relatedTo] are added",
                  "start": 6421,
                  "end": 6529,
                  "loc": {
                    "start": {
                      "line": 180,
                      "column": 4
                    },
                    "end": {
                      "line": 180,
                      "column": 112
                    }
                  },
                  "range": [
                    6421,
                    6529
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 6535,
              "end": 9254,
              "loc": {
                "start": {
                  "line": 181,
                  "column": 4
                },
                "end": {
                  "line": 229,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 6535,
                "end": 6561,
                "loc": {
                  "start": {
                    "line": 181,
                    "column": 4
                  },
                  "end": {
                    "line": 181,
                    "column": 30
                  }
                },
                "name": "generateImpliedConstraints",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 6561,
                "end": 9254,
                "loc": {
                  "start": {
                    "line": 181,
                    "column": 30
                  },
                  "end": {
                    "line": 229,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 6562,
                    "end": 6571,
                    "loc": {
                      "start": {
                        "line": 181,
                        "column": 31
                      },
                      "end": {
                        "line": 181,
                        "column": 40
                      }
                    },
                    "name": "relatedTo"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 6573,
                  "end": 9254,
                  "loc": {
                    "start": {
                      "line": 181,
                      "column": 42
                    },
                    "end": {
                      "line": 229,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 6584,
                      "end": 6630,
                      "loc": {
                        "start": {
                          "line": 182,
                          "column": 8
                        },
                        "end": {
                          "line": 182,
                          "column": 54
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6588,
                          "end": 6629,
                          "loc": {
                            "start": {
                              "line": 182,
                              "column": 12
                            },
                            "end": {
                              "line": 182,
                              "column": 53
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6588,
                            "end": 6593,
                            "loc": {
                              "start": {
                                "line": 182,
                                "column": 12
                              },
                              "end": {
                                "line": 182,
                                "column": 17
                              }
                            },
                            "name": "adder"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6596,
                            "end": 6629,
                            "loc": {
                              "start": {
                                "line": 182,
                                "column": 20
                              },
                              "end": {
                                "line": 182,
                                "column": 53
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6600,
                              "end": 6616,
                              "loc": {
                                "start": {
                                  "line": 182,
                                  "column": 24
                                },
                                "end": {
                                  "line": 182,
                                  "column": 40
                                }
                              },
                              "name": "ConstraintsAdder"
                            },
                            "arguments": [
                              {
                                "type": "MemberExpression",
                                "start": 6617,
                                "end": 6628,
                                "loc": {
                                  "start": {
                                    "line": 182,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 182,
                                    "column": 52
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6617,
                                  "end": 6621,
                                  "loc": {
                                    "start": {
                                      "line": 182,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 182,
                                      "column": 45
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6622,
                                  "end": 6628,
                                  "loc": {
                                    "start": {
                                      "line": 182,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 182,
                                      "column": 52
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6642,
                      "end": 6693,
                      "loc": {
                        "start": {
                          "line": 184,
                          "column": 8
                        },
                        "end": {
                          "line": 184,
                          "column": 59
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6646,
                          "end": 6692,
                          "loc": {
                            "start": {
                              "line": 184,
                              "column": 12
                            },
                            "end": {
                              "line": 184,
                              "column": 58
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6646,
                            "end": 6657,
                            "loc": {
                              "start": {
                                "line": 184,
                                "column": 12
                              },
                              "end": {
                                "line": 184,
                                "column": 23
                              }
                            },
                            "name": "mainObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6660,
                            "end": 6692,
                            "loc": {
                              "start": {
                                "line": 184,
                                "column": 26
                              },
                              "end": {
                                "line": 184,
                                "column": 58
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6660,
                              "end": 6690,
                              "loc": {
                                "start": {
                                  "line": 184,
                                  "column": 26
                                },
                                "end": {
                                  "line": 184,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 6660,
                                "end": 6671,
                                "loc": {
                                  "start": {
                                    "line": 184,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 184,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6660,
                                  "end": 6664,
                                  "loc": {
                                    "start": {
                                      "line": 184,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 184,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6665,
                                  "end": 6671,
                                  "loc": {
                                    "start": {
                                      "line": 184,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 184,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6672,
                                "end": 6690,
                                "loc": {
                                  "start": {
                                    "line": 184,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 184,
                                    "column": 56
                                  }
                                },
                                "name": "getObjectsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6703,
                      "end": 6763,
                      "loc": {
                        "start": {
                          "line": 185,
                          "column": 8
                        },
                        "end": {
                          "line": 185,
                          "column": 68
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6707,
                          "end": 6762,
                          "loc": {
                            "start": {
                              "line": 185,
                              "column": 12
                            },
                            "end": {
                              "line": 185,
                              "column": 67
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6707,
                            "end": 6717,
                            "loc": {
                              "start": {
                                "line": 185,
                                "column": 12
                              },
                              "end": {
                                "line": 185,
                                "column": 22
                              }
                            },
                            "name": "allObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6720,
                            "end": 6762,
                            "loc": {
                              "start": {
                                "line": 185,
                                "column": 25
                              },
                              "end": {
                                "line": 185,
                                "column": 67
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6720,
                              "end": 6749,
                              "loc": {
                                "start": {
                                  "line": 185,
                                  "column": 25
                                },
                                "end": {
                                  "line": 185,
                                  "column": 54
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 6720,
                                "end": 6726,
                                "loc": {
                                  "start": {
                                    "line": 185,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 185,
                                    "column": 31
                                  }
                                },
                                "name": "Sketch"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6727,
                                "end": 6749,
                                "loc": {
                                  "start": {
                                    "line": 185,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 185,
                                    "column": 54
                                  }
                                },
                                "name": "ForObjectsWithChildren"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6750,
                                "end": 6761,
                                "loc": {
                                  "start": {
                                    "line": 185,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 185,
                                    "column": 66
                                  }
                                },
                                "name": "mainObjects"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "IfStatement",
                      "start": 6773,
                      "end": 6838,
                      "loc": {
                        "start": {
                          "line": 186,
                          "column": 8
                        },
                        "end": {
                          "line": 187,
                          "column": 35
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 6777,
                        "end": 6800,
                        "loc": {
                          "start": {
                            "line": 186,
                            "column": 12
                          },
                          "end": {
                            "line": 186,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 6777,
                          "end": 6786,
                          "loc": {
                            "start": {
                              "line": 186,
                              "column": 12
                            },
                            "end": {
                              "line": 186,
                              "column": 21
                            }
                          },
                          "name": "relatedTo"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 6791,
                          "end": 6800,
                          "loc": {
                            "start": {
                              "line": 186,
                              "column": 26
                            },
                            "end": {
                              "line": 186,
                              "column": 35
                            }
                          },
                          "name": "undefined"
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 6815,
                        "end": 6838,
                        "loc": {
                          "start": {
                            "line": 187,
                            "column": 12
                          },
                          "end": {
                            "line": 187,
                            "column": 35
                          }
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "start": 6815,
                          "end": 6837,
                          "loc": {
                            "start": {
                              "line": 187,
                              "column": 12
                            },
                            "end": {
                              "line": 187,
                              "column": 34
                            }
                          },
                          "operator": "=",
                          "left": {
                            "type": "Identifier",
                            "start": 6815,
                            "end": 6824,
                            "loc": {
                              "start": {
                                "line": 187,
                                "column": 12
                              },
                              "end": {
                                "line": 187,
                                "column": 21
                              }
                            },
                            "name": "relatedTo"
                          },
                          "right": {
                            "type": "Identifier",
                            "start": 6827,
                            "end": 6837,
                            "loc": {
                              "start": {
                                "line": 187,
                                "column": 24
                              },
                              "end": {
                                "line": 187,
                                "column": 34
                              }
                            },
                            "name": "allObjects"
                          }
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6848,
                      "end": 6886,
                      "loc": {
                        "start": {
                          "line": 188,
                          "column": 8
                        },
                        "end": {
                          "line": 188,
                          "column": 46
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6852,
                          "end": 6885,
                          "loc": {
                            "start": {
                              "line": 188,
                              "column": 12
                            },
                            "end": {
                              "line": 188,
                              "column": 45
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6852,
                            "end": 6864,
                            "loc": {
                              "start": {
                                "line": 188,
                                "column": 12
                              },
                              "end": {
                                "line": 188,
                                "column": 24
                              }
                            },
                            "name": "relatedToSet"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6867,
                            "end": 6885,
                            "loc": {
                              "start": {
                                "line": 188,
                                "column": 27
                              },
                              "end": {
                                "line": 188,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6871,
                              "end": 6874,
                              "loc": {
                                "start": {
                                  "line": 188,
                                  "column": 31
                                },
                                "end": {
                                  "line": 188,
                                  "column": 34
                                }
                              },
                              "name": "Set"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6875,
                                "end": 6884,
                                "loc": {
                                  "start": {
                                    "line": 188,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 188,
                                    "column": 44
                                  }
                                },
                                "name": "relatedTo"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 6898,
                      "end": 9213,
                      "loc": {
                        "start": {
                          "line": 190,
                          "column": 8
                        },
                        "end": {
                          "line": 226,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 6903,
                        "end": 6914,
                        "loc": {
                          "start": {
                            "line": 190,
                            "column": 13
                          },
                          "end": {
                            "line": 190,
                            "column": 24
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 6907,
                            "end": 6914,
                            "loc": {
                              "start": {
                                "line": 190,
                                "column": 17
                              },
                              "end": {
                                "line": 190,
                                "column": 24
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 6907,
                              "end": 6914,
                              "loc": {
                                "start": {
                                  "line": 190,
                                  "column": 17
                                },
                                "end": {
                                  "line": 190,
                                  "column": 24
                                }
                              },
                              "name": "baseObj"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 6918,
                        "end": 6927,
                        "loc": {
                          "start": {
                            "line": 190,
                            "column": 28
                          },
                          "end": {
                            "line": 190,
                            "column": 37
                          }
                        },
                        "name": "relatedTo"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 6929,
                        "end": 9213,
                        "loc": {
                          "start": {
                            "line": 190,
                            "column": 39
                          },
                          "end": {
                            "line": 226,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 6944,
                            "end": 7562,
                            "loc": {
                              "start": {
                                "line": 191,
                                "column": 12
                              },
                              "end": {
                                "line": 200,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 6948,
                              "end": 6971,
                              "loc": {
                                "start": {
                                  "line": 191,
                                  "column": 16
                                },
                                "end": {
                                  "line": 191,
                                  "column": 39
                                }
                              },
                              "left": {
                                "type": "Identifier",
                                "start": 6948,
                                "end": 6955,
                                "loc": {
                                  "start": {
                                    "line": 191,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 191,
                                    "column": 23
                                  }
                                },
                                "name": "baseObj"
                              },
                              "operator": "instanceof",
                              "right": {
                                "type": "Identifier",
                                "start": 6967,
                                "end": 6971,
                                "loc": {
                                  "start": {
                                    "line": 191,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 191,
                                    "column": 39
                                  }
                                },
                                "name": "Line"
                              }
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 6973,
                              "end": 7562,
                              "loc": {
                                "start": {
                                  "line": 191,
                                  "column": 41
                                },
                                "end": {
                                  "line": 200,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 7058,
                                  "end": 7089,
                                  "loc": {
                                    "start": {
                                      "line": 193,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 193,
                                      "column": 47
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 7062,
                                      "end": 7088,
                                      "loc": {
                                        "start": {
                                          "line": 193,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 193,
                                          "column": 46
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 7062,
                                        "end": 7065,
                                        "loc": {
                                          "start": {
                                            "line": 193,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 193,
                                            "column": 23
                                          }
                                        },
                                        "name": "vec",
                                        "leadingComments": null
                                      },
                                      "init": {
                                        "type": "CallExpression",
                                        "start": 7068,
                                        "end": 7088,
                                        "loc": {
                                          "start": {
                                            "line": 193,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 193,
                                            "column": 46
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 7068,
                                          "end": 7086,
                                          "loc": {
                                            "start": {
                                              "line": 193,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 193,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 7068,
                                            "end": 7075,
                                            "loc": {
                                              "start": {
                                                "line": 193,
                                                "column": 26
                                              },
                                              "end": {
                                                "line": 193,
                                                "column": 33
                                              }
                                            },
                                            "name": "baseObj"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 7076,
                                            "end": 7086,
                                            "loc": {
                                              "start": {
                                                "line": 193,
                                                "column": 34
                                              },
                                              "end": {
                                                "line": 193,
                                                "column": 44
                                              }
                                            },
                                            "name": "getTangent"
                                          },
                                          "computed": false
                                        },
                                        "arguments": []
                                      },
                                      "leadingComments": null
                                    }
                                  ],
                                  "kind": "var",
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": " generate implied horizontality or verticality",
                                      "start": 6992,
                                      "end": 7040,
                                      "loc": {
                                        "start": {
                                          "line": 192,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 192,
                                          "column": 64
                                        }
                                      },
                                      "range": [
                                        6992,
                                        7040
                                      ]
                                    }
                                  ],
                                  "trailingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 7090,
                                      "end": 7111,
                                      "loc": {
                                        "start": {
                                          "line": 193,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 193,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        7090,
                                        7111
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "IfStatement",
                                  "start": 7129,
                                  "end": 7547,
                                  "loc": {
                                    "start": {
                                      "line": 194,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 199,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "BinaryExpression",
                                    "start": 7133,
                                    "end": 7169,
                                    "loc": {
                                      "start": {
                                        "line": 194,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 194,
                                        "column": 56
                                      }
                                    },
                                    "left": {
                                      "type": "CallExpression",
                                      "start": 7133,
                                      "end": 7145,
                                      "loc": {
                                        "start": {
                                          "line": 194,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 194,
                                          "column": 32
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 7133,
                                        "end": 7143,
                                        "loc": {
                                          "start": {
                                            "line": 194,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 194,
                                            "column": 30
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 7133,
                                          "end": 7136,
                                          "loc": {
                                            "start": {
                                              "line": 194,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 194,
                                              "column": 23
                                            }
                                          },
                                          "name": "vec",
                                          "leadingComments": null
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 7137,
                                          "end": 7143,
                                          "loc": {
                                            "start": {
                                              "line": 194,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 194,
                                              "column": 30
                                            }
                                          },
                                          "name": "length"
                                        },
                                        "computed": false,
                                        "leadingComments": null
                                      },
                                      "arguments": [],
                                      "leadingComments": null
                                    },
                                    "operator": ">",
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 7148,
                                      "end": 7169,
                                      "loc": {
                                        "start": {
                                          "line": 194,
                                          "column": 35
                                        },
                                        "end": {
                                          "line": 194,
                                          "column": 56
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 7148,
                                        "end": 7152,
                                        "loc": {
                                          "start": {
                                            "line": 194,
                                            "column": 35
                                          },
                                          "end": {
                                            "line": 194,
                                            "column": 39
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 7153,
                                        "end": 7169,
                                        "loc": {
                                          "start": {
                                            "line": 194,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 194,
                                            "column": 56
                                          }
                                        },
                                        "name": "angularTolerance"
                                      },
                                      "computed": false
                                    },
                                    "leadingComments": null
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 7171,
                                    "end": 7547,
                                    "loc": {
                                      "start": {
                                        "line": 194,
                                        "column": 58
                                      },
                                      "end": {
                                        "line": 199,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "IfStatement",
                                        "start": 7194,
                                        "end": 7351,
                                        "loc": {
                                          "start": {
                                            "line": 195,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 196,
                                            "column": 110
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 7198,
                                          "end": 7238,
                                          "loc": {
                                            "start": {
                                              "line": 195,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 195,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 7198,
                                            "end": 7213,
                                            "loc": {
                                              "start": {
                                                "line": 195,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 195,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7198,
                                              "end": 7206,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7198,
                                                "end": 7202,
                                                "loc": {
                                                  "start": {
                                                    "line": 195,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 195,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7203,
                                                "end": 7206,
                                                "loc": {
                                                  "start": {
                                                    "line": 195,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 195,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7207,
                                                "end": 7212,
                                                "loc": {
                                                  "start": {
                                                    "line": 195,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 195,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7207,
                                                  "end": 7210,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7211,
                                                  "end": 7212,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "y"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 7217,
                                            "end": 7238,
                                            "loc": {
                                              "start": {
                                                "line": 195,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 195,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 7217,
                                              "end": 7221,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7222,
                                              "end": 7238,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 7265,
                                          "end": 7351,
                                          "loc": {
                                            "start": {
                                              "line": 196,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 196,
                                              "column": 110
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 7265,
                                            "end": 7350,
                                            "loc": {
                                              "start": {
                                                "line": 196,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 196,
                                                "column": 109
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7265,
                                              "end": 7274,
                                              "loc": {
                                                "start": {
                                                  "line": 196,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 196,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7265,
                                                "end": 7270,
                                                "loc": {
                                                  "start": {
                                                    "line": 196,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 196,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7271,
                                                "end": 7274,
                                                "loc": {
                                                  "start": {
                                                    "line": 196,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 196,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7275,
                                                "end": 7304,
                                                "loc": {
                                                  "start": {
                                                    "line": 196,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 196,
                                                    "column": 63
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 7275,
                                                  "end": 7290,
                                                  "loc": {
                                                    "start": {
                                                      "line": 196,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 196,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 7275,
                                                    "end": 7285,
                                                    "loc": {
                                                      "start": {
                                                        "line": 196,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 196,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 7286,
                                                    "end": 7290,
                                                    "loc": {
                                                      "start": {
                                                        "line": 196,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 196,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7291,
                                                  "end": 7304,
                                                  "loc": {
                                                    "start": {
                                                      "line": 196,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 196,
                                                      "column": 63
                                                    }
                                                  },
                                                  "name": "HORIZONTALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 7306,
                                                "end": 7315,
                                                "loc": {
                                                  "start": {
                                                    "line": 196,
                                                    "column": 65
                                                  },
                                                  "end": {
                                                    "line": 196,
                                                    "column": 74
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 7307,
                                                    "end": 7314,
                                                    "loc": {
                                                      "start": {
                                                        "line": 196,
                                                        "column": 66
                                                      },
                                                      "end": {
                                                        "line": 196,
                                                        "column": 73
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 7317,
                                                "end": 7349,
                                                "loc": {
                                                  "start": {
                                                    "line": 196,
                                                    "column": 76
                                                  },
                                                  "end": {
                                                    "line": 196,
                                                    "column": 108
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 7318,
                                                    "end": 7329,
                                                    "loc": {
                                                      "start": {
                                                        "line": 196,
                                                        "column": 77
                                                      },
                                                      "end": {
                                                        "line": 196,
                                                        "column": 88
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7318,
                                                      "end": 7323,
                                                      "loc": {
                                                        "start": {
                                                          "line": 196,
                                                          "column": 77
                                                        },
                                                        "end": {
                                                          "line": 196,
                                                          "column": 82
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7325,
                                                      "end": 7329,
                                                      "loc": {
                                                        "start": {
                                                          "line": 196,
                                                          "column": 84
                                                        },
                                                        "end": {
                                                          "line": 196,
                                                          "column": 88
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 7331,
                                                    "end": 7348,
                                                    "loc": {
                                                      "start": {
                                                        "line": 196,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 196,
                                                        "column": 107
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7331,
                                                      "end": 7342,
                                                      "loc": {
                                                        "start": {
                                                          "line": 196,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 196,
                                                          "column": 101
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7344,
                                                      "end": 7348,
                                                      "loc": {
                                                        "start": {
                                                          "line": 196,
                                                          "column": 103
                                                        },
                                                        "end": {
                                                          "line": 196,
                                                          "column": 107
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 7373,
                                        "end": 7528,
                                        "loc": {
                                          "start": {
                                            "line": 197,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 198,
                                            "column": 108
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 7377,
                                          "end": 7417,
                                          "loc": {
                                            "start": {
                                              "line": 197,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 197,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 7377,
                                            "end": 7392,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7377,
                                              "end": 7385,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7377,
                                                "end": 7381,
                                                "loc": {
                                                  "start": {
                                                    "line": 197,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 197,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7382,
                                                "end": 7385,
                                                "loc": {
                                                  "start": {
                                                    "line": 197,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 197,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7386,
                                                "end": 7391,
                                                "loc": {
                                                  "start": {
                                                    "line": 197,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 197,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7386,
                                                  "end": 7389,
                                                  "loc": {
                                                    "start": {
                                                      "line": 197,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 197,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7390,
                                                  "end": 7391,
                                                  "loc": {
                                                    "start": {
                                                      "line": 197,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 197,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "x"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 7396,
                                            "end": 7417,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 7396,
                                              "end": 7400,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7401,
                                              "end": 7417,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 7444,
                                          "end": 7528,
                                          "loc": {
                                            "start": {
                                              "line": 198,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 198,
                                              "column": 108
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 7444,
                                            "end": 7527,
                                            "loc": {
                                              "start": {
                                                "line": 198,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 198,
                                                "column": 107
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7444,
                                              "end": 7453,
                                              "loc": {
                                                "start": {
                                                  "line": 198,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 198,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7444,
                                                "end": 7449,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7450,
                                                "end": 7453,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7454,
                                                "end": 7481,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 61
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 7454,
                                                  "end": 7469,
                                                  "loc": {
                                                    "start": {
                                                      "line": 198,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 198,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 7454,
                                                    "end": 7464,
                                                    "loc": {
                                                      "start": {
                                                        "line": 198,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 198,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 7465,
                                                    "end": 7469,
                                                    "loc": {
                                                      "start": {
                                                        "line": 198,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 198,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7470,
                                                  "end": 7481,
                                                  "loc": {
                                                    "start": {
                                                      "line": 198,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 198,
                                                      "column": 61
                                                    }
                                                  },
                                                  "name": "VERTICALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 7483,
                                                "end": 7492,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 63
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 72
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 7484,
                                                    "end": 7491,
                                                    "loc": {
                                                      "start": {
                                                        "line": 198,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 198,
                                                        "column": 71
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 7494,
                                                "end": 7526,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 74
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 106
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 7495,
                                                    "end": 7506,
                                                    "loc": {
                                                      "start": {
                                                        "line": 198,
                                                        "column": 75
                                                      },
                                                      "end": {
                                                        "line": 198,
                                                        "column": 86
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7495,
                                                      "end": 7500,
                                                      "loc": {
                                                        "start": {
                                                          "line": 198,
                                                          "column": 75
                                                        },
                                                        "end": {
                                                          "line": 198,
                                                          "column": 80
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7502,
                                                      "end": 7506,
                                                      "loc": {
                                                        "start": {
                                                          "line": 198,
                                                          "column": 82
                                                        },
                                                        "end": {
                                                          "line": 198,
                                                          "column": 86
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 7508,
                                                    "end": 7525,
                                                    "loc": {
                                                      "start": {
                                                        "line": 198,
                                                        "column": 88
                                                      },
                                                      "end": {
                                                        "line": 198,
                                                        "column": 105
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7508,
                                                      "end": 7519,
                                                      "loc": {
                                                        "start": {
                                                          "line": 198,
                                                          "column": 88
                                                        },
                                                        "end": {
                                                          "line": 198,
                                                          "column": 99
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7521,
                                                      "end": 7525,
                                                      "loc": {
                                                        "start": {
                                                          "line": 198,
                                                          "column": 101
                                                        },
                                                        "end": {
                                                          "line": 198,
                                                          "column": 105
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null,
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 7090,
                                      "end": 7111,
                                      "loc": {
                                        "start": {
                                          "line": 193,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 193,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        7090,
                                        7111
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            "alternate": null
                          },
                          {
                            "type": "ForOfStatement",
                            "start": 7578,
                            "end": 9202,
                            "loc": {
                              "start": {
                                "line": 202,
                                "column": 12
                              },
                              "end": {
                                "line": 225,
                                "column": 13
                              }
                            },
                            "left": {
                              "type": "VariableDeclaration",
                              "start": 7583,
                              "end": 7595,
                              "loc": {
                                "start": {
                                  "line": 202,
                                  "column": 17
                                },
                                "end": {
                                  "line": 202,
                                  "column": 29
                                }
                              },
                              "declarations": [
                                {
                                  "type": "VariableDeclarator",
                                  "start": 7587,
                                  "end": 7595,
                                  "loc": {
                                    "start": {
                                      "line": 202,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 202,
                                      "column": 29
                                    }
                                  },
                                  "id": {
                                    "type": "Identifier",
                                    "start": 7587,
                                    "end": 7595,
                                    "loc": {
                                      "start": {
                                        "line": 202,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 202,
                                        "column": 29
                                      }
                                    },
                                    "name": "otherObj"
                                  },
                                  "init": null
                                }
                              ],
                              "kind": "var"
                            },
                            "right": {
                              "type": "Identifier",
                              "start": 7599,
                              "end": 7609,
                              "loc": {
                                "start": {
                                  "line": 202,
                                  "column": 33
                                },
                                "end": {
                                  "line": 202,
                                  "column": 43
                                }
                              },
                              "name": "allObjects"
                            },
                            "body": {
                              "type": "BlockStatement",
                              "start": 7611,
                              "end": 9202,
                              "loc": {
                                "start": {
                                  "line": 202,
                                  "column": 45
                                },
                                "end": {
                                  "line": 225,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "IfStatement",
                                  "start": 7630,
                                  "end": 9187,
                                  "loc": {
                                    "start": {
                                      "line": 203,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 224,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "LogicalExpression",
                                    "start": 7634,
                                    "end": 7779,
                                    "loc": {
                                      "start": {
                                        "line": 203,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 204,
                                        "column": 90
                                      }
                                    },
                                    "left": {
                                      "type": "LogicalExpression",
                                      "start": 7634,
                                      "end": 7687,
                                      "loc": {
                                        "start": {
                                          "line": 203,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 203,
                                          "column": 73
                                        }
                                      },
                                      "left": {
                                        "type": "BinaryExpression",
                                        "start": 7634,
                                        "end": 7658,
                                        "loc": {
                                          "start": {
                                            "line": 203,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 203,
                                            "column": 44
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7634,
                                          "end": 7641,
                                          "loc": {
                                            "start": {
                                              "line": 203,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 203,
                                              "column": 27
                                            }
                                          },
                                          "name": "baseObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7653,
                                          "end": 7658,
                                          "loc": {
                                            "start": {
                                              "line": 203,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 203,
                                              "column": 44
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      },
                                      "operator": "&&",
                                      "right": {
                                        "type": "BinaryExpression",
                                        "start": 7662,
                                        "end": 7687,
                                        "loc": {
                                          "start": {
                                            "line": 203,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 203,
                                            "column": 73
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7662,
                                          "end": 7670,
                                          "loc": {
                                            "start": {
                                              "line": 203,
                                              "column": 48
                                            },
                                            "end": {
                                              "line": 203,
                                              "column": 56
                                            }
                                          },
                                          "name": "otherObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7682,
                                          "end": 7687,
                                          "loc": {
                                            "start": {
                                              "line": 203,
                                              "column": 68
                                            },
                                            "end": {
                                              "line": 203,
                                              "column": 73
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      }
                                    },
                                    "operator": "&&",
                                    "right": {
                                      "type": "BinaryExpression",
                                      "start": 7709,
                                      "end": 7779,
                                      "loc": {
                                        "start": {
                                          "line": 204,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 204,
                                          "column": 90
                                        }
                                      },
                                      "left": {
                                        "type": "CallExpression",
                                        "start": 7709,
                                        "end": 7755,
                                        "loc": {
                                          "start": {
                                            "line": 204,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 204,
                                            "column": 66
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 7709,
                                          "end": 7736,
                                          "loc": {
                                            "start": {
                                              "line": 204,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 204,
                                              "column": 47
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 7709,
                                            "end": 7725,
                                            "loc": {
                                              "start": {
                                                "line": 204,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 204,
                                                "column": 36
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7709,
                                              "end": 7716,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 27
                                                }
                                              },
                                              "name": "baseObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7717,
                                              "end": 7725,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 28
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 36
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 7726,
                                            "end": 7736,
                                            "loc": {
                                              "start": {
                                                "line": 204,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 204,
                                                "column": 47
                                              }
                                            },
                                            "name": "distanceTo"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 7737,
                                            "end": 7754,
                                            "loc": {
                                              "start": {
                                                "line": 204,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 204,
                                                "column": 65
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7737,
                                              "end": 7745,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 56
                                                }
                                              },
                                              "name": "otherObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7746,
                                              "end": 7754,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 65
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          }
                                        ]
                                      },
                                      "operator": "<=",
                                      "right": {
                                        "type": "MemberExpression",
                                        "start": 7759,
                                        "end": 7779,
                                        "loc": {
                                          "start": {
                                            "line": 204,
                                            "column": 70
                                          },
                                          "end": {
                                            "line": 204,
                                            "column": 90
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 7759,
                                          "end": 7763,
                                          "loc": {
                                            "start": {
                                              "line": 204,
                                              "column": 70
                                            },
                                            "end": {
                                              "line": 204,
                                              "column": 74
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 7764,
                                          "end": 7779,
                                          "loc": {
                                            "start": {
                                              "line": 204,
                                              "column": 75
                                            },
                                            "end": {
                                              "line": 204,
                                              "column": 90
                                            }
                                          },
                                          "name": "linearTolerance"
                                        },
                                        "computed": false
                                      }
                                    }
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 7781,
                                    "end": 9187,
                                    "loc": {
                                      "start": {
                                        "line": 204,
                                        "column": 92
                                      },
                                      "end": {
                                        "line": 224,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "ExpressionStatement",
                                        "start": 7865,
                                        "end": 7944,
                                        "loc": {
                                          "start": {
                                            "line": 206,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 206,
                                            "column": 99
                                          }
                                        },
                                        "expression": {
                                          "type": "CallExpression",
                                          "start": 7865,
                                          "end": 7943,
                                          "loc": {
                                            "start": {
                                              "line": 206,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 206,
                                              "column": 98
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 7865,
                                            "end": 7874,
                                            "loc": {
                                              "start": {
                                                "line": 206,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 206,
                                                "column": 29
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7865,
                                              "end": 7870,
                                              "loc": {
                                                "start": {
                                                  "line": 206,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 206,
                                                  "column": 25
                                                }
                                              },
                                              "name": "adder",
                                              "leadingComments": null
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7871,
                                              "end": 7874,
                                              "loc": {
                                                "start": {
                                                  "line": 206,
                                                  "column": 26
                                                },
                                                "end": {
                                                  "line": 206,
                                                  "column": 29
                                                }
                                              },
                                              "name": "add"
                                            },
                                            "computed": false,
                                            "leadingComments": null
                                          },
                                          "arguments": [
                                            {
                                              "type": "MemberExpression",
                                              "start": 7875,
                                              "end": 7900,
                                              "loc": {
                                                "start": {
                                                  "line": 206,
                                                  "column": 30
                                                },
                                                "end": {
                                                  "line": 206,
                                                  "column": 55
                                                }
                                              },
                                              "object": {
                                                "type": "MemberExpression",
                                                "start": 7875,
                                                "end": 7890,
                                                "loc": {
                                                  "start": {
                                                    "line": 206,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 206,
                                                    "column": 45
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7875,
                                                  "end": 7885,
                                                  "loc": {
                                                    "start": {
                                                      "line": 206,
                                                      "column": 30
                                                    },
                                                    "end": {
                                                      "line": 206,
                                                      "column": 40
                                                    }
                                                  },
                                                  "name": "Constraint"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7886,
                                                  "end": 7890,
                                                  "loc": {
                                                    "start": {
                                                      "line": 206,
                                                      "column": 41
                                                    },
                                                    "end": {
                                                      "line": 206,
                                                      "column": 45
                                                    }
                                                  },
                                                  "name": "Type"
                                                },
                                                "computed": false
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7891,
                                                "end": 7900,
                                                "loc": {
                                                  "start": {
                                                    "line": 206,
                                                    "column": 46
                                                  },
                                                  "end": {
                                                    "line": 206,
                                                    "column": 55
                                                  }
                                                },
                                                "name": "INCIDENCE"
                                              },
                                              "computed": false
                                            },
                                            {
                                              "type": "ArrayExpression",
                                              "start": 7902,
                                              "end": 7921,
                                              "loc": {
                                                "start": {
                                                  "line": 206,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 206,
                                                  "column": 76
                                                }
                                              },
                                              "elements": [
                                                {
                                                  "type": "Identifier",
                                                  "start": 7903,
                                                  "end": 7910,
                                                  "loc": {
                                                    "start": {
                                                      "line": 206,
                                                      "column": 58
                                                    },
                                                    "end": {
                                                      "line": 206,
                                                      "column": 65
                                                    }
                                                  },
                                                  "name": "baseObj"
                                                },
                                                {
                                                  "type": "Identifier",
                                                  "start": 7912,
                                                  "end": 7920,
                                                  "loc": {
                                                    "start": {
                                                      "line": 206,
                                                      "column": 67
                                                    },
                                                    "end": {
                                                      "line": 206,
                                                      "column": 75
                                                    }
                                                  },
                                                  "name": "otherObj"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "ObjectExpression",
                                              "start": 7923,
                                              "end": 7942,
                                              "loc": {
                                                "start": {
                                                  "line": 206,
                                                  "column": 78
                                                },
                                                "end": {
                                                  "line": 206,
                                                  "column": 97
                                                }
                                              },
                                              "properties": [
                                                {
                                                  "type": "Property",
                                                  "start": 7924,
                                                  "end": 7941,
                                                  "loc": {
                                                    "start": {
                                                      "line": 206,
                                                      "column": 79
                                                    },
                                                    "end": {
                                                      "line": 206,
                                                      "column": 96
                                                    }
                                                  },
                                                  "method": false,
                                                  "shorthand": false,
                                                  "computed": false,
                                                  "key": {
                                                    "type": "Identifier",
                                                    "start": 7924,
                                                    "end": 7935,
                                                    "loc": {
                                                      "start": {
                                                        "line": 206,
                                                        "column": 79
                                                      },
                                                      "end": {
                                                        "line": 206,
                                                        "column": 90
                                                      }
                                                    },
                                                    "name": "noVisualize"
                                                  },
                                                  "value": {
                                                    "type": "Literal",
                                                    "start": 7937,
                                                    "end": 7941,
                                                    "loc": {
                                                      "start": {
                                                        "line": 206,
                                                        "column": 92
                                                      },
                                                      "end": {
                                                        "line": 206,
                                                        "column": 96
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  },
                                                  "kind": "init"
                                                }
                                              ]
                                            }
                                          ],
                                          "leadingComments": null
                                        },
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied incidence of points",
                                            "start": 7804,
                                            "end": 7843,
                                            "loc": {
                                              "start": {
                                                "line": 205,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 205,
                                                "column": 59
                                              }
                                            },
                                            "range": [
                                              7804,
                                              7843
                                            ]
                                          }
                                        ],
                                        "trailingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7968,
                                            "end": 8018,
                                            "loc": {
                                              "start": {
                                                "line": 208,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 208,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7968,
                                              8018
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "VariableDeclaration",
                                        "start": 8040,
                                        "end": 8097,
                                        "loc": {
                                          "start": {
                                            "line": 209,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 209,
                                            "column": 77
                                          }
                                        },
                                        "declarations": [
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 8044,
                                            "end": 8068,
                                            "loc": {
                                              "start": {
                                                "line": 209,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 209,
                                                "column": 48
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 8044,
                                              "end": 8051,
                                              "loc": {
                                                "start": {
                                                  "line": 209,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 209,
                                                  "column": 31
                                                }
                                              },
                                              "name": "basePar",
                                              "leadingComments": null
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 8054,
                                              "end": 8068,
                                              "loc": {
                                                "start": {
                                                  "line": 209,
                                                  "column": 34
                                                },
                                                "end": {
                                                  "line": 209,
                                                  "column": 48
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 8054,
                                                "end": 8061,
                                                "loc": {
                                                  "start": {
                                                    "line": 209,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 209,
                                                    "column": 41
                                                  }
                                                },
                                                "name": "baseObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 8062,
                                                "end": 8068,
                                                "loc": {
                                                  "start": {
                                                    "line": 209,
                                                    "column": 42
                                                  },
                                                  "end": {
                                                    "line": 209,
                                                    "column": 48
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            },
                                            "leadingComments": null
                                          },
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 8070,
                                            "end": 8096,
                                            "loc": {
                                              "start": {
                                                "line": 209,
                                                "column": 50
                                              },
                                              "end": {
                                                "line": 209,
                                                "column": 76
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 8070,
                                              "end": 8078,
                                              "loc": {
                                                "start": {
                                                  "line": 209,
                                                  "column": 50
                                                },
                                                "end": {
                                                  "line": 209,
                                                  "column": 58
                                                }
                                              },
                                              "name": "otherPar"
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 8081,
                                              "end": 8096,
                                              "loc": {
                                                "start": {
                                                  "line": 209,
                                                  "column": 61
                                                },
                                                "end": {
                                                  "line": 209,
                                                  "column": 76
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 8081,
                                                "end": 8089,
                                                "loc": {
                                                  "start": {
                                                    "line": 209,
                                                    "column": 61
                                                  },
                                                  "end": {
                                                    "line": 209,
                                                    "column": 69
                                                  }
                                                },
                                                "name": "otherObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 8090,
                                                "end": 8096,
                                                "loc": {
                                                  "start": {
                                                    "line": 209,
                                                    "column": 70
                                                  },
                                                  "end": {
                                                    "line": 209,
                                                    "column": 76
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            }
                                          }
                                        ],
                                        "kind": "var",
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7968,
                                            "end": 8018,
                                            "loc": {
                                              "start": {
                                                "line": 208,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 208,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7968,
                                              8018
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 8119,
                                        "end": 9168,
                                        "loc": {
                                          "start": {
                                            "line": 210,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 223,
                                            "column": 21
                                          }
                                        },
                                        "test": {
                                          "type": "LogicalExpression",
                                          "start": 8123,
                                          "end": 8270,
                                          "loc": {
                                            "start": {
                                              "line": 210,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 211,
                                              "column": 72
                                            }
                                          },
                                          "left": {
                                            "type": "LogicalExpression",
                                            "start": 8123,
                                            "end": 8241,
                                            "loc": {
                                              "start": {
                                                "line": 210,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 211,
                                                "column": 43
                                              }
                                            },
                                            "left": {
                                              "type": "LogicalExpression",
                                              "start": 8123,
                                              "end": 8196,
                                              "loc": {
                                                "start": {
                                                  "line": 210,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 210,
                                                  "column": 97
                                                }
                                              },
                                              "left": {
                                                "type": "BinaryExpression",
                                                "start": 8123,
                                                "end": 8157,
                                                "loc": {
                                                  "start": {
                                                    "line": 210,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 210,
                                                    "column": 58
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 8123,
                                                  "end": 8130,
                                                  "loc": {
                                                    "start": {
                                                      "line": 210,
                                                      "column": 24
                                                    },
                                                    "end": {
                                                      "line": 210,
                                                      "column": 31
                                                    }
                                                  },
                                                  "name": "basePar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 8142,
                                                  "end": 8157,
                                                  "loc": {
                                                    "start": {
                                                      "line": 210,
                                                      "column": 43
                                                    },
                                                    "end": {
                                                      "line": 210,
                                                      "column": 58
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              },
                                              "operator": "&&",
                                              "right": {
                                                "type": "BinaryExpression",
                                                "start": 8161,
                                                "end": 8196,
                                                "loc": {
                                                  "start": {
                                                    "line": 210,
                                                    "column": 62
                                                  },
                                                  "end": {
                                                    "line": 210,
                                                    "column": 97
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 8161,
                                                  "end": 8169,
                                                  "loc": {
                                                    "start": {
                                                      "line": 210,
                                                      "column": 62
                                                    },
                                                    "end": {
                                                      "line": 210,
                                                      "column": 70
                                                    }
                                                  },
                                                  "name": "otherPar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 8181,
                                                  "end": 8196,
                                                  "loc": {
                                                    "start": {
                                                      "line": 210,
                                                      "column": 82
                                                    },
                                                    "end": {
                                                      "line": 210,
                                                      "column": 97
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              }
                                            },
                                            "operator": "&&",
                                            "right": {
                                              "type": "BinaryExpression",
                                              "start": 8222,
                                              "end": 8241,
                                              "loc": {
                                                "start": {
                                                  "line": 211,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 211,
                                                  "column": 43
                                                }
                                              },
                                              "left": {
                                                "type": "Identifier",
                                                "start": 8222,
                                                "end": 8229,
                                                "loc": {
                                                  "start": {
                                                    "line": 211,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 31
                                                  }
                                                },
                                                "name": "basePar"
                                              },
                                              "operator": "!=",
                                              "right": {
                                                "type": "Identifier",
                                                "start": 8233,
                                                "end": 8241,
                                                "loc": {
                                                  "start": {
                                                    "line": 211,
                                                    "column": 35
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 43
                                                  }
                                                },
                                                "name": "otherPar"
                                              }
                                            }
                                          },
                                          "operator": "&&",
                                          "right": {
                                            "type": "CallExpression",
                                            "start": 8245,
                                            "end": 8270,
                                            "loc": {
                                              "start": {
                                                "line": 211,
                                                "column": 47
                                              },
                                              "end": {
                                                "line": 211,
                                                "column": 72
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 8245,
                                              "end": 8261,
                                              "loc": {
                                                "start": {
                                                  "line": 211,
                                                  "column": 47
                                                },
                                                "end": {
                                                  "line": 211,
                                                  "column": 63
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 8245,
                                                "end": 8257,
                                                "loc": {
                                                  "start": {
                                                    "line": 211,
                                                    "column": 47
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 59
                                                  }
                                                },
                                                "name": "relatedToSet"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 8258,
                                                "end": 8261,
                                                "loc": {
                                                  "start": {
                                                    "line": 211,
                                                    "column": 60
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 63
                                                  }
                                                },
                                                "name": "has"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "Identifier",
                                                "start": 8262,
                                                "end": 8269,
                                                "loc": {
                                                  "start": {
                                                    "line": 211,
                                                    "column": 64
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 71
                                                  }
                                                },
                                                "name": "basePar"
                                              }
                                            ]
                                          }
                                        },
                                        "consequent": {
                                          "type": "BlockStatement",
                                          "start": 8272,
                                          "end": 9168,
                                          "loc": {
                                            "start": {
                                              "line": 211,
                                              "column": 74
                                            },
                                            "end": {
                                              "line": 223,
                                              "column": 21
                                            }
                                          },
                                          "body": [
                                            {
                                              "type": "IfStatement",
                                              "start": 8299,
                                              "end": 9145,
                                              "loc": {
                                                "start": {
                                                  "line": 212,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 222,
                                                  "column": 25
                                                }
                                              },
                                              "test": {
                                                "type": "LogicalExpression",
                                                "start": 8303,
                                                "end": 8385,
                                                "loc": {
                                                  "start": {
                                                    "line": 212,
                                                    "column": 28
                                                  },
                                                  "end": {
                                                    "line": 212,
                                                    "column": 110
                                                  }
                                                },
                                                "left": {
                                                  "type": "BinaryExpression",
                                                  "start": 8303,
                                                  "end": 8341,
                                                  "loc": {
                                                    "start": {
                                                      "line": 212,
                                                      "column": 28
                                                    },
                                                    "end": {
                                                      "line": 212,
                                                      "column": 66
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 8303,
                                                    "end": 8334,
                                                    "loc": {
                                                      "start": {
                                                        "line": 212,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 212,
                                                        "column": 59
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 8303,
                                                      "end": 8325,
                                                      "loc": {
                                                        "start": {
                                                          "line": 212,
                                                          "column": 28
                                                        },
                                                        "end": {
                                                          "line": 212,
                                                          "column": 50
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 8303,
                                                        "end": 8317,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 28
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 42
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 8303,
                                                          "end": 8310,
                                                          "loc": {
                                                            "start": {
                                                              "line": 212,
                                                              "column": 28
                                                            },
                                                            "end": {
                                                              "line": 212,
                                                              "column": 35
                                                            }
                                                          },
                                                          "name": "basePar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 8311,
                                                          "end": 8317,
                                                          "loc": {
                                                            "start": {
                                                              "line": 212,
                                                              "column": 36
                                                            },
                                                            "end": {
                                                              "line": 212,
                                                              "column": 42
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 8318,
                                                        "end": 8325,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 43
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 50
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 8326,
                                                        "end": 8333,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 51
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 58
                                                          }
                                                        },
                                                        "name": "baseObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 8339,
                                                    "end": 8341,
                                                    "loc": {
                                                      "start": {
                                                        "line": 212,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 212,
                                                        "column": 66
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 8340,
                                                      "end": 8341,
                                                      "loc": {
                                                        "start": {
                                                          "line": 212,
                                                          "column": 65
                                                        },
                                                        "end": {
                                                          "line": 212,
                                                          "column": 66
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                },
                                                "operator": "&&",
                                                "right": {
                                                  "type": "BinaryExpression",
                                                  "start": 8345,
                                                  "end": 8385,
                                                  "loc": {
                                                    "start": {
                                                      "line": 212,
                                                      "column": 70
                                                    },
                                                    "end": {
                                                      "line": 212,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 8345,
                                                    "end": 8378,
                                                    "loc": {
                                                      "start": {
                                                        "line": 212,
                                                        "column": 70
                                                      },
                                                      "end": {
                                                        "line": 212,
                                                        "column": 103
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 8345,
                                                      "end": 8368,
                                                      "loc": {
                                                        "start": {
                                                          "line": 212,
                                                          "column": 70
                                                        },
                                                        "end": {
                                                          "line": 212,
                                                          "column": 93
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 8345,
                                                        "end": 8360,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 70
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 85
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 8345,
                                                          "end": 8353,
                                                          "loc": {
                                                            "start": {
                                                              "line": 212,
                                                              "column": 70
                                                            },
                                                            "end": {
                                                              "line": 212,
                                                              "column": 78
                                                            }
                                                          },
                                                          "name": "otherPar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 8354,
                                                          "end": 8360,
                                                          "loc": {
                                                            "start": {
                                                              "line": 212,
                                                              "column": 79
                                                            },
                                                            "end": {
                                                              "line": 212,
                                                              "column": 85
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 8361,
                                                        "end": 8368,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 86
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 93
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 8369,
                                                        "end": 8377,
                                                        "loc": {
                                                          "start": {
                                                            "line": 212,
                                                            "column": 94
                                                          },
                                                          "end": {
                                                            "line": 212,
                                                            "column": 102
                                                          }
                                                        },
                                                        "name": "otherObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 8383,
                                                    "end": 8385,
                                                    "loc": {
                                                      "start": {
                                                        "line": 212,
                                                        "column": 108
                                                      },
                                                      "end": {
                                                        "line": 212,
                                                        "column": 110
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 8384,
                                                      "end": 8385,
                                                      "loc": {
                                                        "start": {
                                                          "line": 212,
                                                          "column": 109
                                                        },
                                                        "end": {
                                                          "line": 212,
                                                          "column": 110
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                }
                                              },
                                              "consequent": {
                                                "type": "BlockStatement",
                                                "start": 8387,
                                                "end": 9145,
                                                "loc": {
                                                  "start": {
                                                    "line": 212,
                                                    "column": 112
                                                  },
                                                  "end": {
                                                    "line": 222,
                                                    "column": 25
                                                  }
                                                },
                                                "body": [
                                                  {
                                                    "type": "VariableDeclaration",
                                                    "start": 8418,
                                                    "end": 8553,
                                                    "loc": {
                                                      "start": {
                                                        "line": 213,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 214,
                                                        "column": 82
                                                      }
                                                    },
                                                    "declarations": [
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 8422,
                                                        "end": 8468,
                                                        "loc": {
                                                          "start": {
                                                            "line": 213,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 213,
                                                            "column": 78
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 8422,
                                                          "end": 8429,
                                                          "loc": {
                                                            "start": {
                                                              "line": 213,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 213,
                                                              "column": 39
                                                            }
                                                          },
                                                          "name": "baseDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 8432,
                                                          "end": 8468,
                                                          "loc": {
                                                            "start": {
                                                              "line": 213,
                                                              "column": 42
                                                            },
                                                            "end": {
                                                              "line": 213,
                                                              "column": 78
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8432,
                                                            "end": 8450,
                                                            "loc": {
                                                              "start": {
                                                                "line": 213,
                                                                "column": 42
                                                              },
                                                              "end": {
                                                                "line": 213,
                                                                "column": 60
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8432,
                                                              "end": 8439,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 213,
                                                                  "column": 42
                                                                },
                                                                "end": {
                                                                  "line": 213,
                                                                  "column": 49
                                                                }
                                                              },
                                                              "name": "basePar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8440,
                                                              "end": 8450,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 213,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 213,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8451,
                                                              "end": 8467,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 213,
                                                                  "column": 61
                                                                },
                                                                "end": {
                                                                  "line": 213,
                                                                  "column": 77
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8451,
                                                                "end": 8458,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 61
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 68
                                                                  }
                                                                },
                                                                "name": "baseObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8459,
                                                                "end": 8467,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 77
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 8503,
                                                        "end": 8552,
                                                        "loc": {
                                                          "start": {
                                                            "line": 214,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 214,
                                                            "column": 81
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 8503,
                                                          "end": 8511,
                                                          "loc": {
                                                            "start": {
                                                              "line": 214,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 214,
                                                              "column": 40
                                                            }
                                                          },
                                                          "name": "otherDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 8514,
                                                          "end": 8552,
                                                          "loc": {
                                                            "start": {
                                                              "line": 214,
                                                              "column": 43
                                                            },
                                                            "end": {
                                                              "line": 214,
                                                              "column": 81
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8514,
                                                            "end": 8533,
                                                            "loc": {
                                                              "start": {
                                                                "line": 214,
                                                                "column": 43
                                                              },
                                                              "end": {
                                                                "line": 214,
                                                                "column": 62
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8514,
                                                              "end": 8522,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 214,
                                                                  "column": 43
                                                                },
                                                                "end": {
                                                                  "line": 214,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "otherPar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8523,
                                                              "end": 8533,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 214,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 214,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8534,
                                                              "end": 8551,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 214,
                                                                  "column": 63
                                                                },
                                                                "end": {
                                                                  "line": 214,
                                                                  "column": 80
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8534,
                                                                "end": 8542,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 214,
                                                                    "column": 63
                                                                  },
                                                                  "end": {
                                                                    "line": 214,
                                                                    "column": 71
                                                                  }
                                                                },
                                                                "name": "otherObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8543,
                                                                "end": 8551,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 214,
                                                                    "column": 72
                                                                  },
                                                                  "end": {
                                                                    "line": 214,
                                                                    "column": 80
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      }
                                                    ],
                                                    "kind": "var"
                                                  },
                                                  {
                                                    "type": "IfStatement",
                                                    "start": 8583,
                                                    "end": 9118,
                                                    "loc": {
                                                      "start": {
                                                        "line": 215,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 221,
                                                        "column": 29
                                                      }
                                                    },
                                                    "test": {
                                                      "type": "LogicalExpression",
                                                      "start": 8587,
                                                      "end": 8764,
                                                      "loc": {
                                                        "start": {
                                                          "line": 215,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 216,
                                                          "column": 92
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "LogicalExpression",
                                                        "start": 8587,
                                                        "end": 8670,
                                                        "loc": {
                                                          "start": {
                                                            "line": 215,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 215,
                                                            "column": 115
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "BinaryExpression",
                                                          "start": 8587,
                                                          "end": 8626,
                                                          "loc": {
                                                            "start": {
                                                              "line": 215,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 215,
                                                              "column": 71
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8587,
                                                            "end": 8603,
                                                            "loc": {
                                                              "start": {
                                                                "line": 215,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 215,
                                                                "column": 48
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8587,
                                                              "end": 8601,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8587,
                                                                "end": 8594,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 215,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 215,
                                                                    "column": 39
                                                                  }
                                                                },
                                                                "name": "baseDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8595,
                                                                "end": 8601,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 215,
                                                                    "column": 40
                                                                  },
                                                                  "end": {
                                                                    "line": 215,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8606,
                                                            "end": 8626,
                                                            "loc": {
                                                              "start": {
                                                                "line": 215,
                                                                "column": 51
                                                              },
                                                              "end": {
                                                                "line": 215,
                                                                "column": 71
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8606,
                                                              "end": 8610,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 51
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 55
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8611,
                                                              "end": 8626,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 56
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 71
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        },
                                                        "operator": "&&",
                                                        "right": {
                                                          "type": "BinaryExpression",
                                                          "start": 8630,
                                                          "end": 8670,
                                                          "loc": {
                                                            "start": {
                                                              "line": 215,
                                                              "column": 75
                                                            },
                                                            "end": {
                                                              "line": 215,
                                                              "column": 115
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8630,
                                                            "end": 8647,
                                                            "loc": {
                                                              "start": {
                                                                "line": 215,
                                                                "column": 75
                                                              },
                                                              "end": {
                                                                "line": 215,
                                                                "column": 92
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8630,
                                                              "end": 8645,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 75
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 90
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8630,
                                                                "end": 8638,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 215,
                                                                    "column": 75
                                                                  },
                                                                  "end": {
                                                                    "line": 215,
                                                                    "column": 83
                                                                  }
                                                                },
                                                                "name": "otherDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8639,
                                                                "end": 8645,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 215,
                                                                    "column": 84
                                                                  },
                                                                  "end": {
                                                                    "line": 215,
                                                                    "column": 90
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8650,
                                                            "end": 8670,
                                                            "loc": {
                                                              "start": {
                                                                "line": 215,
                                                                "column": 95
                                                              },
                                                              "end": {
                                                                "line": 215,
                                                                "column": 115
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8650,
                                                              "end": 8654,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 95
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 99
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8655,
                                                              "end": 8670,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 215,
                                                                  "column": 100
                                                                },
                                                                "end": {
                                                                  "line": 215,
                                                                  "column": 115
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        }
                                                      },
                                                      "operator": "&&",
                                                      "right": {
                                                        "type": "BinaryExpression",
                                                        "start": 8704,
                                                        "end": 8764,
                                                        "loc": {
                                                          "start": {
                                                            "line": 216,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 216,
                                                            "column": 92
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "CallExpression",
                                                          "start": 8704,
                                                          "end": 8739,
                                                          "loc": {
                                                            "start": {
                                                              "line": 216,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 216,
                                                              "column": 67
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8704,
                                                            "end": 8712,
                                                            "loc": {
                                                              "start": {
                                                                "line": 216,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 216,
                                                                "column": 40
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8704,
                                                              "end": 8708,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 216,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 216,
                                                                  "column": 36
                                                                }
                                                              },
                                                              "name": "Math"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8709,
                                                              "end": 8712,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 216,
                                                                  "column": 37
                                                                },
                                                                "end": {
                                                                  "line": 216,
                                                                  "column": 40
                                                                }
                                                              },
                                                              "name": "abs"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8713,
                                                              "end": 8738,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 216,
                                                                  "column": 41
                                                                },
                                                                "end": {
                                                                  "line": 216,
                                                                  "column": 66
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "CallExpression",
                                                                "start": 8713,
                                                                "end": 8736,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 216,
                                                                    "column": 41
                                                                  },
                                                                  "end": {
                                                                    "line": 216,
                                                                    "column": 64
                                                                  }
                                                                },
                                                                "callee": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8713,
                                                                  "end": 8726,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 216,
                                                                      "column": 41
                                                                    },
                                                                    "end": {
                                                                      "line": 216,
                                                                      "column": 54
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "Identifier",
                                                                    "start": 8713,
                                                                    "end": 8720,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 216,
                                                                        "column": 41
                                                                      },
                                                                      "end": {
                                                                        "line": 216,
                                                                        "column": 48
                                                                      }
                                                                    },
                                                                    "name": "baseDir"
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8721,
                                                                    "end": 8726,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 216,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 216,
                                                                        "column": 54
                                                                      }
                                                                    },
                                                                    "name": "cross"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "arguments": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8727,
                                                                    "end": 8735,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 216,
                                                                        "column": 55
                                                                      },
                                                                      "end": {
                                                                        "line": 216,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "otherDir"
                                                                  }
                                                                ]
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8737,
                                                                "end": 8738,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 216,
                                                                    "column": 65
                                                                  },
                                                                  "end": {
                                                                    "line": 216,
                                                                    "column": 66
                                                                  }
                                                                },
                                                                "name": "z"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        },
                                                        "operator": "<=",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 8743,
                                                          "end": 8764,
                                                          "loc": {
                                                            "start": {
                                                              "line": 216,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 216,
                                                              "column": 92
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "ThisExpression",
                                                            "start": 8743,
                                                            "end": 8747,
                                                            "loc": {
                                                              "start": {
                                                                "line": 216,
                                                                "column": 71
                                                              },
                                                              "end": {
                                                                "line": 216,
                                                                "column": 75
                                                              }
                                                            }
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 8748,
                                                            "end": 8764,
                                                            "loc": {
                                                              "start": {
                                                                "line": 216,
                                                                "column": 76
                                                              },
                                                              "end": {
                                                                "line": 216,
                                                                "column": 92
                                                              }
                                                            },
                                                            "name": "angularTolerance"
                                                          },
                                                          "computed": false
                                                        }
                                                      }
                                                    },
                                                    "consequent": {
                                                      "type": "BlockStatement",
                                                      "start": 8766,
                                                      "end": 9118,
                                                      "loc": {
                                                        "start": {
                                                          "line": 216,
                                                          "column": 94
                                                        },
                                                        "end": {
                                                          "line": 221,
                                                          "column": 29
                                                        }
                                                      },
                                                      "body": [
                                                        {
                                                          "type": "VariableDeclaration",
                                                          "start": 8801,
                                                          "end": 8995,
                                                          "loc": {
                                                            "start": {
                                                              "line": 217,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 219,
                                                              "column": 63
                                                            }
                                                          },
                                                          "declarations": [
                                                            {
                                                              "type": "VariableDeclarator",
                                                              "start": 8805,
                                                              "end": 8994,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 217,
                                                                  "column": 36
                                                                },
                                                                "end": {
                                                                  "line": 219,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "id": {
                                                                "type": "Identifier",
                                                                "start": 8805,
                                                                "end": 8809,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 217,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 217,
                                                                    "column": 40
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              "init": {
                                                                "type": "ConditionalExpression",
                                                                "start": 8812,
                                                                "end": 8994,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 217,
                                                                    "column": 43
                                                                  },
                                                                  "end": {
                                                                    "line": 219,
                                                                    "column": 62
                                                                  }
                                                                },
                                                                "test": {
                                                                  "type": "LogicalExpression",
                                                                  "start": 8813,
                                                                  "end": 8864,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 217,
                                                                      "column": 44
                                                                    },
                                                                    "end": {
                                                                      "line": 217,
                                                                      "column": 95
                                                                    }
                                                                  },
                                                                  "left": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8813,
                                                                    "end": 8836,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 217,
                                                                        "column": 44
                                                                      },
                                                                      "end": {
                                                                        "line": 217,
                                                                        "column": 67
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8813,
                                                                      "end": 8820,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 217,
                                                                          "column": 44
                                                                        },
                                                                        "end": {
                                                                          "line": 217,
                                                                          "column": 51
                                                                        }
                                                                      },
                                                                      "name": "basePar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8832,
                                                                      "end": 8836,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 217,
                                                                          "column": 63
                                                                        },
                                                                        "end": {
                                                                          "line": 217,
                                                                          "column": 67
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "operator": "&&",
                                                                  "right": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8840,
                                                                    "end": 8864,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 217,
                                                                        "column": 71
                                                                      },
                                                                      "end": {
                                                                        "line": 217,
                                                                        "column": 95
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8840,
                                                                      "end": 8848,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 217,
                                                                          "column": 71
                                                                        },
                                                                        "end": {
                                                                          "line": 217,
                                                                          "column": 79
                                                                        }
                                                                      },
                                                                      "name": "otherPar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8860,
                                                                      "end": 8864,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 217,
                                                                          "column": 91
                                                                        },
                                                                        "end": {
                                                                          "line": 217,
                                                                          "column": 95
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "parenthesizedExpression": true
                                                                },
                                                                "consequent": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8905,
                                                                  "end": 8930,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 218,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 218,
                                                                      "column": 63
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8905,
                                                                    "end": 8920,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 218,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 218,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8905,
                                                                      "end": 8915,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 218,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 218,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8916,
                                                                      "end": 8920,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 218,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 218,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8921,
                                                                    "end": 8930,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 218,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 218,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "INCIDENCE"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "alternate": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8970,
                                                                  "end": 8994,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 219,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 219,
                                                                      "column": 62
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8970,
                                                                    "end": 8985,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 219,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 219,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8970,
                                                                      "end": 8980,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 219,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 219,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8981,
                                                                      "end": 8985,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 219,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 219,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8986,
                                                                    "end": 8994,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 219,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 219,
                                                                        "column": 62
                                                                      }
                                                                    },
                                                                    "name": "TANGENCY"
                                                                  },
                                                                  "computed": false
                                                                }
                                                              }
                                                            }
                                                          ],
                                                          "kind": "var"
                                                        },
                                                        {
                                                          "type": "ExpressionStatement",
                                                          "start": 9029,
                                                          "end": 9087,
                                                          "loc": {
                                                            "start": {
                                                              "line": 220,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 220,
                                                              "column": 90
                                                            }
                                                          },
                                                          "expression": {
                                                            "type": "CallExpression",
                                                            "start": 9029,
                                                            "end": 9086,
                                                            "loc": {
                                                              "start": {
                                                                "line": 220,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 220,
                                                                "column": 89
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 9029,
                                                              "end": 9038,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 220,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 220,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 9029,
                                                                "end": 9034,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 220,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 220,
                                                                    "column": 37
                                                                  }
                                                                },
                                                                "name": "adder"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 9035,
                                                                "end": 9038,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 220,
                                                                    "column": 38
                                                                  },
                                                                  "end": {
                                                                    "line": 220,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "add"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": [
                                                              {
                                                                "type": "Identifier",
                                                                "start": 9039,
                                                                "end": 9043,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 220,
                                                                    "column": 42
                                                                  },
                                                                  "end": {
                                                                    "line": 220,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              {
                                                                "type": "ArrayExpression",
                                                                "start": 9045,
                                                                "end": 9064,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 220,
                                                                    "column": 48
                                                                  },
                                                                  "end": {
                                                                    "line": 220,
                                                                    "column": 67
                                                                  }
                                                                },
                                                                "elements": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 9046,
                                                                    "end": 9053,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 220,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 220,
                                                                        "column": 56
                                                                      }
                                                                    },
                                                                    "name": "basePar"
                                                                  },
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 9055,
                                                                    "end": 9063,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 220,
                                                                        "column": 58
                                                                      },
                                                                      "end": {
                                                                        "line": 220,
                                                                        "column": 66
                                                                      }
                                                                    },
                                                                    "name": "otherPar"
                                                                  }
                                                                ]
                                                              },
                                                              {
                                                                "type": "ObjectExpression",
                                                                "start": 9066,
                                                                "end": 9085,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 220,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 220,
                                                                    "column": 88
                                                                  }
                                                                },
                                                                "properties": [
                                                                  {
                                                                    "type": "Property",
                                                                    "start": 9067,
                                                                    "end": 9084,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 220,
                                                                        "column": 70
                                                                      },
                                                                      "end": {
                                                                        "line": 220,
                                                                        "column": 87
                                                                      }
                                                                    },
                                                                    "method": false,
                                                                    "shorthand": false,
                                                                    "computed": false,
                                                                    "key": {
                                                                      "type": "Identifier",
                                                                      "start": 9067,
                                                                      "end": 9078,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 220,
                                                                          "column": 70
                                                                        },
                                                                        "end": {
                                                                          "line": 220,
                                                                          "column": 81
                                                                        }
                                                                      },
                                                                      "name": "noVisualize"
                                                                    },
                                                                    "value": {
                                                                      "type": "Literal",
                                                                      "start": 9080,
                                                                      "end": 9084,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 220,
                                                                          "column": 83
                                                                        },
                                                                        "end": {
                                                                          "line": 220,
                                                                          "column": 87
                                                                        }
                                                                      },
                                                                      "value": true,
                                                                      "rawValue": true,
                                                                      "raw": "true"
                                                                    },
                                                                    "kind": "init"
                                                                  }
                                                                ]
                                                              }
                                                            ]
                                                          }
                                                        }
                                                      ]
                                                    },
                                                    "alternate": null
                                                  }
                                                ]
                                              },
                                              "alternate": null
                                            }
                                          ]
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 9225,
                      "end": 9247,
                      "loc": {
                        "start": {
                          "line": 228,
                          "column": 8
                        },
                        "end": {
                          "line": 228,
                          "column": 30
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 9232,
                        "end": 9246,
                        "loc": {
                          "start": {
                            "line": 228,
                            "column": 15
                          },
                          "end": {
                            "line": 228,
                            "column": 29
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 9232,
                          "end": 9244,
                          "loc": {
                            "start": {
                              "line": 228,
                              "column": 15
                            },
                            "end": {
                              "line": 228,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 9232,
                            "end": 9237,
                            "loc": {
                              "start": {
                                "line": 228,
                                "column": 15
                              },
                              "end": {
                                "line": 228,
                                "column": 20
                              }
                            },
                            "name": "adder"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 9238,
                            "end": 9244,
                            "loc": {
                              "start": {
                                "line": 228,
                                "column": 21
                              },
                              "end": {
                                "line": 228,
                                "column": 27
                              }
                            },
                            "name": "commit"
                          },
                          "computed": false
                        },
                        "arguments": []
                      }
                    }
                  ]
                }
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "if relatedTo is set, then only constraints which are somehow related to objects from [relatedTo] are added",
                  "start": 6421,
                  "end": 6529,
                  "loc": {
                    "start": {
                      "line": 180,
                      "column": 4
                    },
                    "end": {
                      "line": 180,
                      "column": 112
                    }
                  },
                  "range": [
                    6421,
                    6529
                  ]
                }
              ]
            }
          ]
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5780,
            "end": 5859,
            "loc": {
              "start": {
                "line": 158,
                "column": 0
              },
              "end": {
                "line": 158,
                "column": 79
              }
            },
            "range": [
              5780,
              5859
            ]
          },
          {
            "type": "Block",
            "value": "\r\n * ConstraintGenerator - an object that generates implied constraints for some sketch\r\n ",
            "start": 5861,
            "end": 5955,
            "loc": {
              "start": {
                "line": 159,
                "column": 0
              },
              "end": {
                "line": 161,
                "column": 3
              }
            },
            "range": [
              5861,
              5955
            ]
          }
        ],
        "trailingComments": []
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5780,
          "end": 5859,
          "loc": {
            "start": {
              "line": 158,
              "column": 0
            },
            "end": {
              "line": 158,
              "column": 79
            }
          },
          "range": [
            5780,
            5859
          ]
        },
        {
          "type": "Block",
          "value": "\r\n * ConstraintGenerator - an object that generates implied constraints for some sketch\r\n ",
          "start": 5861,
          "end": 5955,
          "loc": {
            "start": {
              "line": 159,
              "column": 0
            },
            "end": {
              "line": 161,
              "column": 3
            }
          },
          "range": [
            5861,
            5955
          ]
        }
      ]
    }
  ]
}