{
  "type": "Program",
  "start": 0,
  "end": 8787,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 220,
      "column": 0
    }
  },
  "sourceType": "module",
  "body": [
    {
      "type": "ImportDeclaration",
      "start": 0,
      "end": 45,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 45
        }
      },
      "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": 44,
        "loc": {
          "start": {
            "line": 1,
            "column": 23
          },
          "end": {
            "line": 1,
            "column": 44
          }
        },
        "value": "sketcher/constraint",
        "rawValue": "sketcher/constraint",
        "raw": "'sketcher/constraint'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 46,
      "end": 83,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 37
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 53,
          "end": 59,
          "loc": {
            "start": {
              "line": 2,
              "column": 7
            },
            "end": {
              "line": 2,
              "column": 13
            }
          },
          "local": {
            "type": "Identifier",
            "start": 53,
            "end": 59,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 13
              }
            },
            "name": "Sketch"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 65,
        "end": 82,
        "loc": {
          "start": {
            "line": 2,
            "column": 19
          },
          "end": {
            "line": 2,
            "column": 36
          }
        },
        "value": "sketcher/sketch",
        "rawValue": "sketcher/sketch",
        "raw": "'sketcher/sketch'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 84,
      "end": 150,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 66
        }
      },
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "start": 92,
          "end": 107,
          "loc": {
            "start": {
              "line": 3,
              "column": 8
            },
            "end": {
              "line": 3,
              "column": 23
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 92,
            "end": 107,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          },
          "local": {
            "type": "Identifier",
            "start": 92,
            "end": 107,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 109,
          "end": 114,
          "loc": {
            "start": {
              "line": 3,
              "column": 25
            },
            "end": {
              "line": 3,
              "column": 30
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 109,
            "end": 114,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          },
          "local": {
            "type": "Identifier",
            "start": 109,
            "end": 114,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 116,
          "end": 120,
          "loc": {
            "start": {
              "line": 3,
              "column": 32
            },
            "end": {
              "line": 3,
              "column": 36
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 116,
            "end": 120,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          },
          "local": {
            "type": "Identifier",
            "start": 116,
            "end": 120,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 127,
        "end": 149,
        "loc": {
          "start": {
            "line": 3,
            "column": 43
          },
          "end": {
            "line": 3,
            "column": 65
          }
        },
        "value": "sketcher/geomobjects",
        "rawValue": "sketcher/geomobjects",
        "raw": "'sketcher/geomobjects'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 151,
      "end": 177,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 26
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 158,
          "end": 163,
          "loc": {
            "start": {
              "line": 4,
              "column": 7
            },
            "end": {
              "line": 4,
              "column": 12
            }
          },
          "local": {
            "type": "Identifier",
            "start": 158,
            "end": 163,
            "loc": {
              "start": {
                "line": 4,
                "column": 7
              },
              "end": {
                "line": 4,
                "column": 12
              }
            },
            "name": "THREE"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 169,
        "end": 176,
        "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": 179,
          "end": 247,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            179,
            247
          ]
        }
      ]
    },
    {
      "type": "ClassDeclaration",
      "start": 248,
      "end": 912,
      "loc": {
        "start": {
          "line": 7,
          "column": 0
        },
        "end": {
          "line": 37,
          "column": 1
        }
      },
      "id": {
        "type": "Identifier",
        "start": 254,
        "end": 257,
        "loc": {
          "start": {
            "line": 7,
            "column": 6
          },
          "end": {
            "line": 7,
            "column": 9
          }
        },
        "name": "DSU",
        "leadingComments": null
      },
      "superClass": null,
      "body": {
        "type": "ClassBody",
        "start": 258,
        "end": 912,
        "loc": {
          "start": {
            "line": 7,
            "column": 10
          },
          "end": {
            "line": 37,
            "column": 1
          }
        },
        "body": [
          {
            "type": "MethodDefinition",
            "start": 264,
            "end": 319,
            "loc": {
              "start": {
                "line": 8,
                "column": 4
              },
              "end": {
                "line": 10,
                "column": 5
              }
            },
            "computed": false,
            "key": {
              "type": "Identifier",
              "start": 264,
              "end": 275,
              "loc": {
                "start": {
                  "line": 8,
                  "column": 4
                },
                "end": {
                  "line": 8,
                  "column": 15
                }
              },
              "name": "constructor"
            },
            "static": false,
            "kind": "constructor",
            "value": {
              "type": "FunctionExpression",
              "start": 275,
              "end": 319,
              "loc": {
                "start": {
                  "line": 8,
                  "column": 15
                },
                "end": {
                  "line": 10,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start": 278,
                "end": 319,
                "loc": {
                  "start": {
                    "line": 8,
                    "column": 18
                  },
                  "end": {
                    "line": 10,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 288,
                    "end": 313,
                    "loc": {
                      "start": {
                        "line": 9,
                        "column": 8
                      },
                      "end": {
                        "line": 9,
                        "column": 33
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 288,
                      "end": 312,
                      "loc": {
                        "start": {
                          "line": 9,
                          "column": 8
                        },
                        "end": {
                          "line": 9,
                          "column": 32
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "MemberExpression",
                        "start": 288,
                        "end": 300,
                        "loc": {
                          "start": {
                            "line": 9,
                            "column": 8
                          },
                          "end": {
                            "line": 9,
                            "column": 20
                          }
                        },
                        "object": {
                          "type": "ThisExpression",
                          "start": 288,
                          "end": 292,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 12
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 293,
                          "end": 300,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 13
                            },
                            "end": {
                              "line": 9,
                              "column": 20
                            }
                          },
                          "name": "parents"
                        },
                        "computed": false
                      },
                      "right": {
                        "type": "NewExpression",
                        "start": 303,
                        "end": 312,
                        "loc": {
                          "start": {
                            "line": 9,
                            "column": 23
                          },
                          "end": {
                            "line": 9,
                            "column": 32
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 307,
                          "end": 310,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 27
                            },
                            "end": {
                              "line": 9,
                              "column": 30
                            }
                          },
                          "name": "Map"
                        },
                        "arguments": []
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "MethodDefinition",
            "start": 325,
            "end": 392,
            "loc": {
              "start": {
                "line": 12,
                "column": 4
              },
              "end": {
                "line": 14,
                "column": 5
              }
            },
            "computed": false,
            "key": {
              "type": "Identifier",
              "start": 325,
              "end": 334,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 4
                },
                "end": {
                  "line": 12,
                  "column": 13
                }
              },
              "name": "getParent"
            },
            "static": false,
            "kind": "method",
            "value": {
              "type": "FunctionExpression",
              "start": 334,
              "end": 392,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 13
                },
                "end": {
                  "line": 14,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 335,
                  "end": 338,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 14
                    },
                    "end": {
                      "line": 12,
                      "column": 17
                    }
                  },
                  "name": "obj"
                }
              ],
              "body": {
                "type": "BlockStatement",
                "start": 340,
                "end": 392,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 19
                  },
                  "end": {
                    "line": 14,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ReturnStatement",
                    "start": 350,
                    "end": 386,
                    "loc": {
                      "start": {
                        "line": 13,
                        "column": 8
                      },
                      "end": {
                        "line": 13,
                        "column": 44
                      }
                    },
                    "argument": {
                      "type": "LogicalExpression",
                      "start": 357,
                      "end": 385,
                      "loc": {
                        "start": {
                          "line": 13,
                          "column": 15
                        },
                        "end": {
                          "line": 13,
                          "column": 43
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 357,
                        "end": 378,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 15
                          },
                          "end": {
                            "line": 13,
                            "column": 36
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 357,
                          "end": 373,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 15
                            },
                            "end": {
                              "line": 13,
                              "column": 31
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 357,
                            "end": 369,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 15
                              },
                              "end": {
                                "line": 13,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 357,
                              "end": 361,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 15
                                },
                                "end": {
                                  "line": 13,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 362,
                              "end": 369,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 20
                                },
                                "end": {
                                  "line": 13,
                                  "column": 27
                                }
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 370,
                            "end": 373,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 28
                              },
                              "end": {
                                "line": 13,
                                "column": 31
                              }
                            },
                            "name": "get"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 374,
                            "end": 377,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 32
                              },
                              "end": {
                                "line": 13,
                                "column": 35
                              }
                            },
                            "name": "obj"
                          }
                        ]
                      },
                      "operator": "||",
                      "right": {
                        "type": "Identifier",
                        "start": 382,
                        "end": 385,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 40
                          },
                          "end": {
                            "line": 13,
                            "column": 43
                          }
                        },
                        "name": "obj"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "MethodDefinition",
            "start": 398,
            "end": 461,
            "loc": {
              "start": {
                "line": 16,
                "column": 4
              },
              "end": {
                "line": 18,
                "column": 5
              }
            },
            "computed": false,
            "key": {
              "type": "Identifier",
              "start": 398,
              "end": 407,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 4
                },
                "end": {
                  "line": 16,
                  "column": 13
                }
              },
              "name": "setParent"
            },
            "static": false,
            "kind": "method",
            "value": {
              "type": "FunctionExpression",
              "start": 407,
              "end": 461,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 13
                },
                "end": {
                  "line": 18,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 408,
                  "end": 411,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 14
                    },
                    "end": {
                      "line": 16,
                      "column": 17
                    }
                  },
                  "name": "obj"
                },
                {
                  "type": "Identifier",
                  "start": 413,
                  "end": 416,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 19
                    },
                    "end": {
                      "line": 16,
                      "column": 22
                    }
                  },
                  "name": "par"
                }
              ],
              "body": {
                "type": "BlockStatement",
                "start": 418,
                "end": 461,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 24
                  },
                  "end": {
                    "line": 18,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 428,
                    "end": 455,
                    "loc": {
                      "start": {
                        "line": 17,
                        "column": 8
                      },
                      "end": {
                        "line": 17,
                        "column": 35
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 428,
                      "end": 454,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 8
                        },
                        "end": {
                          "line": 17,
                          "column": 34
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 428,
                        "end": 444,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 8
                          },
                          "end": {
                            "line": 17,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "MemberExpression",
                          "start": 428,
                          "end": 440,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 8
                            },
                            "end": {
                              "line": 17,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 428,
                            "end": 432,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 8
                              },
                              "end": {
                                "line": 17,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 433,
                            "end": 440,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 13
                              },
                              "end": {
                                "line": 17,
                                "column": 20
                              }
                            },
                            "name": "parents"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 441,
                          "end": 444,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 21
                            },
                            "end": {
                              "line": 17,
                              "column": 24
                            }
                          },
                          "name": "set"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 445,
                          "end": 448,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 25
                            },
                            "end": {
                              "line": 17,
                              "column": 28
                            }
                          },
                          "name": "obj"
                        },
                        {
                          "type": "Identifier",
                          "start": 450,
                          "end": 453,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 30
                            },
                            "end": {
                              "line": 17,
                              "column": 33
                            }
                          },
                          "name": "par"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "MethodDefinition",
            "start": 467,
            "end": 669,
            "loc": {
              "start": {
                "line": 20,
                "column": 4
              },
              "end": {
                "line": 27,
                "column": 5
              }
            },
            "computed": false,
            "key": {
              "type": "Identifier",
              "start": 467,
              "end": 474,
              "loc": {
                "start": {
                  "line": 20,
                  "column": 4
                },
                "end": {
                  "line": 20,
                  "column": 11
                }
              },
              "name": "getHead"
            },
            "static": false,
            "kind": "method",
            "value": {
              "type": "FunctionExpression",
              "start": 474,
              "end": 669,
              "loc": {
                "start": {
                  "line": 20,
                  "column": 11
                },
                "end": {
                  "line": 27,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 475,
                  "end": 478,
                  "loc": {
                    "start": {
                      "line": 20,
                      "column": 12
                    },
                    "end": {
                      "line": 20,
                      "column": 15
                    }
                  },
                  "name": "obj"
                }
              ],
              "body": {
                "type": "BlockStatement",
                "start": 480,
                "end": 669,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 17
                  },
                  "end": {
                    "line": 27,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "VariableDeclaration",
                    "start": 490,
                    "end": 520,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 8
                      },
                      "end": {
                        "line": 21,
                        "column": 38
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 494,
                        "end": 519,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 12
                          },
                          "end": {
                            "line": 21,
                            "column": 37
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 494,
                          "end": 497,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 12
                            },
                            "end": {
                              "line": 21,
                              "column": 15
                            }
                          },
                          "name": "par"
                        },
                        "init": {
                          "type": "CallExpression",
                          "start": 500,
                          "end": 519,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 18
                            },
                            "end": {
                              "line": 21,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 500,
                            "end": 514,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 18
                              },
                              "end": {
                                "line": 21,
                                "column": 32
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 500,
                              "end": 504,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 18
                                },
                                "end": {
                                  "line": 21,
                                  "column": 22
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 505,
                              "end": 514,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 23
                                },
                                "end": {
                                  "line": 21,
                                  "column": 32
                                }
                              },
                              "name": "getParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 515,
                              "end": 518,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 33
                                },
                                "end": {
                                  "line": 21,
                                  "column": 36
                                }
                              },
                              "name": "obj"
                            }
                          ]
                        }
                      }
                    ],
                    "kind": "var"
                  },
                  {
                    "type": "IfStatement",
                    "start": 529,
                    "end": 569,
                    "loc": {
                      "start": {
                        "line": 22,
                        "column": 8
                      },
                      "end": {
                        "line": 23,
                        "column": 23
                      }
                    },
                    "test": {
                      "type": "BinaryExpression",
                      "start": 533,
                      "end": 544,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 12
                        },
                        "end": {
                          "line": 22,
                          "column": 23
                        }
                      },
                      "left": {
                        "type": "Identifier",
                        "start": 533,
                        "end": 536,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 12
                          },
                          "end": {
                            "line": 22,
                            "column": 15
                          }
                        },
                        "name": "par"
                      },
                      "operator": "===",
                      "right": {
                        "type": "Identifier",
                        "start": 541,
                        "end": 544,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 20
                          },
                          "end": {
                            "line": 22,
                            "column": 23
                          }
                        },
                        "name": "obj"
                      }
                    },
                    "consequent": {
                      "type": "ReturnStatement",
                      "start": 558,
                      "end": 569,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 12
                        },
                        "end": {
                          "line": 23,
                          "column": 23
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 565,
                        "end": 568,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 19
                          },
                          "end": {
                            "line": 23,
                            "column": 22
                          }
                        },
                        "name": "obj"
                      }
                    },
                    "alternate": null
                  },
                  {
                    "type": "VariableDeclaration",
                    "start": 578,
                    "end": 607,
                    "loc": {
                      "start": {
                        "line": 24,
                        "column": 8
                      },
                      "end": {
                        "line": 24,
                        "column": 37
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 582,
                        "end": 606,
                        "loc": {
                          "start": {
                            "line": 24,
                            "column": 12
                          },
                          "end": {
                            "line": 24,
                            "column": 36
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 582,
                          "end": 586,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 12
                            },
                            "end": {
                              "line": 24,
                              "column": 16
                            }
                          },
                          "name": "head"
                        },
                        "init": {
                          "type": "CallExpression",
                          "start": 589,
                          "end": 606,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 19
                            },
                            "end": {
                              "line": 24,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 589,
                            "end": 601,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 19
                              },
                              "end": {
                                "line": 24,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 589,
                              "end": 593,
                              "loc": {
                                "start": {
                                  "line": 24,
                                  "column": 19
                                },
                                "end": {
                                  "line": 24,
                                  "column": 23
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 594,
                              "end": 601,
                              "loc": {
                                "start": {
                                  "line": 24,
                                  "column": 24
                                },
                                "end": {
                                  "line": 24,
                                  "column": 31
                                }
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 602,
                              "end": 605,
                              "loc": {
                                "start": {
                                  "line": 24,
                                  "column": 32
                                },
                                "end": {
                                  "line": 24,
                                  "column": 35
                                }
                              },
                              "name": "par"
                            }
                          ]
                        }
                      }
                    ],
                    "kind": "var"
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 616,
                    "end": 642,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 8
                      },
                      "end": {
                        "line": 25,
                        "column": 34
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 616,
                      "end": 641,
                      "loc": {
                        "start": {
                          "line": 25,
                          "column": 8
                        },
                        "end": {
                          "line": 25,
                          "column": 33
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 616,
                        "end": 630,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 8
                          },
                          "end": {
                            "line": 25,
                            "column": 22
                          }
                        },
                        "object": {
                          "type": "ThisExpression",
                          "start": 616,
                          "end": 620,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 8
                            },
                            "end": {
                              "line": 25,
                              "column": 12
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 621,
                          "end": 630,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 13
                            },
                            "end": {
                              "line": 25,
                              "column": 22
                            }
                          },
                          "name": "setParent"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 631,
                          "end": 634,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 23
                            },
                            "end": {
                              "line": 25,
                              "column": 26
                            }
                          },
                          "name": "obj"
                        },
                        {
                          "type": "Identifier",
                          "start": 636,
                          "end": 640,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 28
                            },
                            "end": {
                              "line": 25,
                              "column": 32
                            }
                          },
                          "name": "head"
                        }
                      ]
                    }
                  },
                  {
                    "type": "ReturnStatement",
                    "start": 651,
                    "end": 663,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 8
                      },
                      "end": {
                        "line": 26,
                        "column": 20
                      }
                    },
                    "argument": {
                      "type": "Identifier",
                      "start": 658,
                      "end": 662,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 15
                        },
                        "end": {
                          "line": 26,
                          "column": 19
                        }
                      },
                      "name": "head"
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "MethodDefinition",
            "start": 675,
            "end": 910,
            "loc": {
              "start": {
                "line": 29,
                "column": 4
              },
              "end": {
                "line": 36,
                "column": 5
              }
            },
            "computed": false,
            "key": {
              "type": "Identifier",
              "start": 675,
              "end": 680,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 4
                },
                "end": {
                  "line": 29,
                  "column": 9
                }
              },
              "name": "merge"
            },
            "static": false,
            "kind": "method",
            "value": {
              "type": "FunctionExpression",
              "start": 680,
              "end": 910,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 9
                },
                "end": {
                  "line": 36,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 681,
                  "end": 685,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 10
                    },
                    "end": {
                      "line": 29,
                      "column": 14
                    }
                  },
                  "name": "objA"
                },
                {
                  "type": "Identifier",
                  "start": 687,
                  "end": 691,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 16
                    },
                    "end": {
                      "line": 29,
                      "column": 20
                    }
                  },
                  "name": "objB"
                }
              ],
              "body": {
                "type": "BlockStatement",
                "start": 693,
                "end": 910,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 22
                  },
                  "end": {
                    "line": 36,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 703,
                    "end": 729,
                    "loc": {
                      "start": {
                        "line": 30,
                        "column": 8
                      },
                      "end": {
                        "line": 30,
                        "column": 34
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 703,
                      "end": 728,
                      "loc": {
                        "start": {
                          "line": 30,
                          "column": 8
                        },
                        "end": {
                          "line": 30,
                          "column": 33
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 703,
                        "end": 707,
                        "loc": {
                          "start": {
                            "line": 30,
                            "column": 8
                          },
                          "end": {
                            "line": 30,
                            "column": 12
                          }
                        },
                        "name": "objA"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 710,
                        "end": 728,
                        "loc": {
                          "start": {
                            "line": 30,
                            "column": 15
                          },
                          "end": {
                            "line": 30,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 710,
                          "end": 722,
                          "loc": {
                            "start": {
                              "line": 30,
                              "column": 15
                            },
                            "end": {
                              "line": 30,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 710,
                            "end": 714,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 15
                              },
                              "end": {
                                "line": 30,
                                "column": 19
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 715,
                            "end": 722,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 20
                              },
                              "end": {
                                "line": 30,
                                "column": 27
                              }
                            },
                            "name": "getHead"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 723,
                            "end": 727,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 28
                              },
                              "end": {
                                "line": 30,
                                "column": 32
                              }
                            },
                            "name": "objA"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 738,
                    "end": 764,
                    "loc": {
                      "start": {
                        "line": 31,
                        "column": 8
                      },
                      "end": {
                        "line": 31,
                        "column": 34
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 738,
                      "end": 763,
                      "loc": {
                        "start": {
                          "line": 31,
                          "column": 8
                        },
                        "end": {
                          "line": 31,
                          "column": 33
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 738,
                        "end": 742,
                        "loc": {
                          "start": {
                            "line": 31,
                            "column": 8
                          },
                          "end": {
                            "line": 31,
                            "column": 12
                          }
                        },
                        "name": "objB"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 745,
                        "end": 763,
                        "loc": {
                          "start": {
                            "line": 31,
                            "column": 15
                          },
                          "end": {
                            "line": 31,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 745,
                          "end": 757,
                          "loc": {
                            "start": {
                              "line": 31,
                              "column": 15
                            },
                            "end": {
                              "line": 31,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 745,
                            "end": 749,
                            "loc": {
                              "start": {
                                "line": 31,
                                "column": 15
                              },
                              "end": {
                                "line": 31,
                                "column": 19
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 750,
                            "end": 757,
                            "loc": {
                              "start": {
                                "line": 31,
                                "column": 20
                              },
                              "end": {
                                "line": 31,
                                "column": 27
                              }
                            },
                            "name": "getHead"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 758,
                            "end": 762,
                            "loc": {
                              "start": {
                                "line": 31,
                                "column": 28
                              },
                              "end": {
                                "line": 31,
                                "column": 32
                              }
                            },
                            "name": "objB"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "IfStatement",
                    "start": 773,
                    "end": 904,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 8
                      },
                      "end": {
                        "line": 35,
                        "column": 46
                      }
                    },
                    "test": {
                      "type": "BinaryExpression",
                      "start": 777,
                      "end": 796,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 12
                        },
                        "end": {
                          "line": 32,
                          "column": 31
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 777,
                        "end": 790,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 12
                          },
                          "end": {
                            "line": 32,
                            "column": 25
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 777,
                          "end": 788,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 12
                            },
                            "end": {
                              "line": 32,
                              "column": 23
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 777,
                            "end": 781,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 12
                              },
                              "end": {
                                "line": 32,
                                "column": 16
                              }
                            },
                            "name": "Math"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 782,
                            "end": 788,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 17
                              },
                              "end": {
                                "line": 32,
                                "column": 23
                              }
                            },
                            "name": "random"
                          },
                          "computed": false
                        },
                        "arguments": []
                      },
                      "operator": "<",
                      "right": {
                        "type": "Literal",
                        "start": 793,
                        "end": 796,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 28
                          },
                          "end": {
                            "line": 32,
                            "column": 31
                          }
                        },
                        "value": 0.5,
                        "rawValue": 0.5,
                        "raw": "0.5"
                      }
                    },
                    "consequent": {
                      "type": "ReturnStatement",
                      "start": 810,
                      "end": 844,
                      "loc": {
                        "start": {
                          "line": 33,
                          "column": 12
                        },
                        "end": {
                          "line": 33,
                          "column": 46
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 817,
                        "end": 843,
                        "loc": {
                          "start": {
                            "line": 33,
                            "column": 19
                          },
                          "end": {
                            "line": 33,
                            "column": 45
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 817,
                          "end": 831,
                          "loc": {
                            "start": {
                              "line": 33,
                              "column": 19
                            },
                            "end": {
                              "line": 33,
                              "column": 33
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 817,
                            "end": 821,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 19
                              },
                              "end": {
                                "line": 33,
                                "column": 23
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 822,
                            "end": 831,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 24
                              },
                              "end": {
                                "line": 33,
                                "column": 33
                              }
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 832,
                            "end": 836,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 34
                              },
                              "end": {
                                "line": 33,
                                "column": 38
                              }
                            },
                            "name": "objA"
                          },
                          {
                            "type": "Identifier",
                            "start": 838,
                            "end": 842,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 40
                              },
                              "end": {
                                "line": 33,
                                "column": 44
                              }
                            },
                            "name": "objB"
                          }
                        ]
                      }
                    },
                    "alternate": {
                      "type": "ReturnStatement",
                      "start": 870,
                      "end": 904,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 12
                        },
                        "end": {
                          "line": 35,
                          "column": 46
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 877,
                        "end": 903,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 19
                          },
                          "end": {
                            "line": 35,
                            "column": 45
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 877,
                          "end": 891,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 19
                            },
                            "end": {
                              "line": 35,
                              "column": 33
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 877,
                            "end": 881,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 19
                              },
                              "end": {
                                "line": 35,
                                "column": 23
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 882,
                            "end": 891,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 24
                              },
                              "end": {
                                "line": 35,
                                "column": 33
                              }
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 892,
                            "end": 896,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 34
                              },
                              "end": {
                                "line": 35,
                                "column": 38
                              }
                            },
                            "name": "objB"
                          },
                          {
                            "type": "Identifier",
                            "start": 898,
                            "end": 902,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 40
                              },
                              "end": {
                                "line": 35,
                                "column": 44
                              }
                            },
                            "name": "objA"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        ],
        "trailingComments": null
      },
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Disjoint Set Union ========================",
          "start": 179,
          "end": 247,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            179,
            247
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 914,
          "end": 981,
          "loc": {
            "start": {
              "line": 39,
              "column": 0
            },
            "end": {
              "line": 39,
              "column": 67
            }
          },
          "range": [
            914,
            981
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 982,
      "end": 5379,
      "loc": {
        "start": {
          "line": 40,
          "column": 0
        },
        "end": {
          "line": 145,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 989,
        "end": 5379,
        "loc": {
          "start": {
            "line": 40,
            "column": 7
          },
          "end": {
            "line": 145,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 995,
          "end": 1011,
          "loc": {
            "start": {
              "line": 40,
              "column": 13
            },
            "end": {
              "line": 40,
              "column": 29
            }
          },
          "name": "ConstraintsAdder",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 1012,
          "end": 5379,
          "loc": {
            "start": {
              "line": 40,
              "column": 30
            },
            "end": {
              "line": 145,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 1018,
              "end": 1600,
              "loc": {
                "start": {
                  "line": 41,
                  "column": 4
                },
                "end": {
                  "line": 56,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1018,
                "end": 1029,
                "loc": {
                  "start": {
                    "line": 41,
                    "column": 4
                  },
                  "end": {
                    "line": 41,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 1029,
                "end": 1600,
                "loc": {
                  "start": {
                    "line": 41,
                    "column": 15
                  },
                  "end": {
                    "line": 56,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1030,
                    "end": 1036,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 16
                      },
                      "end": {
                        "line": 41,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1038,
                  "end": 1600,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 24
                    },
                    "end": {
                      "line": 56,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1104,
                      "end": 1125,
                      "loc": {
                        "start": {
                          "line": 43,
                          "column": 8
                        },
                        "end": {
                          "line": 43,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1104,
                        "end": 1124,
                        "loc": {
                          "start": {
                            "line": 43,
                            "column": 8
                          },
                          "end": {
                            "line": 43,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1104,
                          "end": 1115,
                          "loc": {
                            "start": {
                              "line": 43,
                              "column": 8
                            },
                            "end": {
                              "line": 43,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1104,
                            "end": 1108,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 8
                              },
                              "end": {
                                "line": 43,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1109,
                            "end": 1115,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 13
                              },
                              "end": {
                                "line": 43,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 1118,
                          "end": 1124,
                          "loc": {
                            "start": {
                              "line": 43,
                              "column": 22
                            },
                            "end": {
                              "line": 43,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the sketch we are going to add constraints to",
                          "start": 1048,
                          "end": 1095,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 8
                            },
                            "end": {
                              "line": 42,
                              "column": 55
                            }
                          },
                          "range": [
                            1048,
                            1095
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1134,
                          "end": 1188,
                          "loc": {
                            "start": {
                              "line": 44,
                              "column": 8
                            },
                            "end": {
                              "line": 44,
                              "column": 62
                            }
                          },
                          "range": [
                            1134,
                            1188
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1197,
                      "end": 1219,
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 8
                        },
                        "end": {
                          "line": 45,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1197,
                        "end": 1218,
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 8
                          },
                          "end": {
                            "line": 45,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1197,
                          "end": 1213,
                          "loc": {
                            "start": {
                              "line": 45,
                              "column": 8
                            },
                            "end": {
                              "line": 45,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1197,
                            "end": 1201,
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 8
                              },
                              "end": {
                                "line": 45,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1202,
                            "end": 1213,
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 13
                              },
                              "end": {
                                "line": 45,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 1216,
                          "end": 1218,
                          "loc": {
                            "start": {
                              "line": 45,
                              "column": 27
                            },
                            "end": {
                              "line": 45,
                              "column": 29
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1134,
                          "end": 1188,
                          "loc": {
                            "start": {
                              "line": 44,
                              "column": 8
                            },
                            "end": {
                              "line": 44,
                              "column": 62
                            }
                          },
                          "range": [
                            1134,
                            1188
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1229,
                          "end": 1287,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 8
                            },
                            "end": {
                              "line": 47,
                              "column": 66
                            }
                          },
                          "range": [
                            1229,
                            1287
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1296,
                      "end": 1326,
                      "loc": {
                        "start": {
                          "line": 48,
                          "column": 8
                        },
                        "end": {
                          "line": 48,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1296,
                        "end": 1325,
                        "loc": {
                          "start": {
                            "line": 48,
                            "column": 8
                          },
                          "end": {
                            "line": 48,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1296,
                          "end": 1313,
                          "loc": {
                            "start": {
                              "line": 48,
                              "column": 8
                            },
                            "end": {
                              "line": 48,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1296,
                            "end": 1300,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 8
                              },
                              "end": {
                                "line": 48,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1301,
                            "end": 1313,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 13
                              },
                              "end": {
                                "line": 48,
                                "column": 25
                              }
                            },
                            "name": "incidenceDsu"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1316,
                          "end": 1325,
                          "loc": {
                            "start": {
                              "line": 48,
                              "column": 28
                            },
                            "end": {
                              "line": 48,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1320,
                            "end": 1323,
                            "loc": {
                              "start": {
                                "line": 48,
                                "column": 32
                              },
                              "end": {
                                "line": 48,
                                "column": 35
                              }
                            },
                            "name": "DSU"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1229,
                          "end": 1287,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 8
                            },
                            "end": {
                              "line": 47,
                              "column": 66
                            }
                          },
                          "range": [
                            1229,
                            1287
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1335,
                          "end": 1377,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 8
                            },
                            "end": {
                              "line": 49,
                              "column": 50
                            }
                          },
                          "range": [
                            1335,
                            1377
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1386,
                          "end": 1425,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 8
                            },
                            "end": {
                              "line": 50,
                              "column": 47
                            }
                          },
                          "range": [
                            1386,
                            1425
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1434,
                      "end": 1465,
                      "loc": {
                        "start": {
                          "line": 51,
                          "column": 8
                        },
                        "end": {
                          "line": 51,
                          "column": 39
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1434,
                        "end": 1464,
                        "loc": {
                          "start": {
                            "line": 51,
                            "column": 8
                          },
                          "end": {
                            "line": 51,
                            "column": 38
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1434,
                          "end": 1452,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1434,
                            "end": 1438,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 8
                              },
                              "end": {
                                "line": 51,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1439,
                            "end": 1452,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 13
                              },
                              "end": {
                                "line": 51,
                                "column": 26
                              }
                            },
                            "name": "horizontalSet"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1455,
                          "end": 1464,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 29
                            },
                            "end": {
                              "line": 51,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1459,
                            "end": 1462,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 33
                              },
                              "end": {
                                "line": 51,
                                "column": 36
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1335,
                          "end": 1377,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 8
                            },
                            "end": {
                              "line": 49,
                              "column": 50
                            }
                          },
                          "range": [
                            1335,
                            1377
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1386,
                          "end": 1425,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 8
                            },
                            "end": {
                              "line": 50,
                              "column": 47
                            }
                          },
                          "range": [
                            1386,
                            1425
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1474,
                      "end": 1503,
                      "loc": {
                        "start": {
                          "line": 52,
                          "column": 8
                        },
                        "end": {
                          "line": 52,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1474,
                        "end": 1502,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 8
                          },
                          "end": {
                            "line": 52,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1474,
                          "end": 1490,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 8
                            },
                            "end": {
                              "line": 52,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1474,
                            "end": 1478,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 8
                              },
                              "end": {
                                "line": 52,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1479,
                            "end": 1490,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 13
                              },
                              "end": {
                                "line": 52,
                                "column": 24
                              }
                            },
                            "name": "verticalSet"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1493,
                          "end": 1502,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 27
                            },
                            "end": {
                              "line": 52,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1497,
                            "end": 1500,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 31
                              },
                              "end": {
                                "line": 52,
                                "column": 34
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1513,
                          "end": 1573,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 68
                            }
                          },
                          "range": [
                            1513,
                            1573
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1582,
                      "end": 1594,
                      "loc": {
                        "start": {
                          "line": 55,
                          "column": 8
                        },
                        "end": {
                          "line": 55,
                          "column": 20
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1582,
                        "end": 1593,
                        "loc": {
                          "start": {
                            "line": 55,
                            "column": 8
                          },
                          "end": {
                            "line": 55,
                            "column": 19
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1582,
                          "end": 1591,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1582,
                            "end": 1586,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 8
                              },
                              "end": {
                                "line": 55,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1587,
                            "end": 1591,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 13
                              },
                              "end": {
                                "line": 55,
                                "column": 17
                              }
                            },
                            "name": "init"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1513,
                          "end": 1573,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 68
                            }
                          },
                          "range": [
                            1513,
                            1573
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 1606,
              "end": 2175,
              "loc": {
                "start": {
                  "line": 58,
                  "column": 4
                },
                "end": {
                  "line": 69,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1606,
                "end": 1610,
                "loc": {
                  "start": {
                    "line": 58,
                    "column": 4
                  },
                  "end": {
                    "line": 58,
                    "column": 8
                  }
                },
                "name": "init"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 1610,
                "end": 2175,
                "loc": {
                  "start": {
                    "line": 58,
                    "column": 8
                  },
                  "end": {
                    "line": 69,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 1613,
                  "end": 2175,
                  "loc": {
                    "start": {
                      "line": 58,
                      "column": 11
                    },
                    "end": {
                      "line": 69,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 1675,
                      "end": 1730,
                      "loc": {
                        "start": {
                          "line": 60,
                          "column": 8
                        },
                        "end": {
                          "line": 60,
                          "column": 63
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1679,
                          "end": 1729,
                          "loc": {
                            "start": {
                              "line": 60,
                              "column": 12
                            },
                            "end": {
                              "line": 60,
                              "column": 62
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1679,
                            "end": 1690,
                            "loc": {
                              "start": {
                                "line": 60,
                                "column": 12
                              },
                              "end": {
                                "line": 60,
                                "column": 23
                              }
                            },
                            "name": "constraints",
                            "leadingComments": null
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 1693,
                            "end": 1729,
                            "loc": {
                              "start": {
                                "line": 60,
                                "column": 26
                              },
                              "end": {
                                "line": 60,
                                "column": 62
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1693,
                              "end": 1727,
                              "loc": {
                                "start": {
                                  "line": 60,
                                  "column": 26
                                },
                                "end": {
                                  "line": 60,
                                  "column": 60
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 1693,
                                "end": 1704,
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1693,
                                  "end": 1697,
                                  "loc": {
                                    "start": {
                                      "line": 60,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 60,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1698,
                                  "end": 1704,
                                  "loc": {
                                    "start": {
                                      "line": 60,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 60,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1705,
                                "end": 1727,
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 60
                                  }
                                },
                                "name": "getConstraintsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          },
                          "leadingComments": null
                        }
                      ],
                      "kind": "var",
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "take all present constraints into account",
                          "start": 1623,
                          "end": 1666,
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 8
                            },
                            "end": {
                              "line": 59,
                              "column": 51
                            }
                          },
                          "range": [
                            1623,
                            1666
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 1739,
                      "end": 2169,
                      "loc": {
                        "start": {
                          "line": 61,
                          "column": 8
                        },
                        "end": {
                          "line": 68,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 1744,
                        "end": 1754,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 13
                          },
                          "end": {
                            "line": 61,
                            "column": 23
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 1748,
                            "end": 1754,
                            "loc": {
                              "start": {
                                "line": 61,
                                "column": 17
                              },
                              "end": {
                                "line": 61,
                                "column": 23
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 1748,
                              "end": 1754,
                              "loc": {
                                "start": {
                                  "line": 61,
                                  "column": 17
                                },
                                "end": {
                                  "line": 61,
                                  "column": 23
                                }
                              },
                              "name": "constr"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 1758,
                        "end": 1769,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 27
                          },
                          "end": {
                            "line": 61,
                            "column": 38
                          }
                        },
                        "name": "constraints"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 1771,
                        "end": 2169,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 40
                          },
                          "end": {
                            "line": 68,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 1785,
                            "end": 1911,
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 12
                              },
                              "end": {
                                "line": 63,
                                "column": 72
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 1789,
                              "end": 1837,
                              "loc": {
                                "start": {
                                  "line": 62,
                                  "column": 16
                                },
                                "end": {
                                  "line": 62,
                                  "column": 64
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 1789,
                                "end": 1804,
                                "loc": {
                                  "start": {
                                    "line": 62,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 62,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1789,
                                  "end": 1795,
                                  "loc": {
                                    "start": {
                                      "line": 62,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 62,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1796,
                                  "end": 1804,
                                  "loc": {
                                    "start": {
                                      "line": 62,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 62,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 1809,
                                "end": 1837,
                                "loc": {
                                  "start": {
                                    "line": 62,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 62,
                                    "column": 64
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 1809,
                                  "end": 1834,
                                  "loc": {
                                    "start": {
                                      "line": 62,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 62,
                                      "column": 61
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1809,
                                    "end": 1824,
                                    "loc": {
                                      "start": {
                                        "line": 62,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 62,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 1809,
                                      "end": 1819,
                                      "loc": {
                                        "start": {
                                          "line": 62,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 62,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1820,
                                      "end": 1824,
                                      "loc": {
                                        "start": {
                                          "line": 62,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 62,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1825,
                                    "end": 1834,
                                    "loc": {
                                      "start": {
                                        "line": 62,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 62,
                                        "column": 61
                                      }
                                    },
                                    "name": "INCIDENCE"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 1835,
                                  "end": 1836,
                                  "loc": {
                                    "start": {
                                      "line": 62,
                                      "column": 62
                                    },
                                    "end": {
                                      "line": 62,
                                      "column": 63
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 1855,
                              "end": 1911,
                              "loc": {
                                "start": {
                                  "line": 63,
                                  "column": 16
                                },
                                "end": {
                                  "line": 63,
                                  "column": 72
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 1855,
                                "end": 1910,
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 63,
                                    "column": 71
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 1855,
                                  "end": 1878,
                                  "loc": {
                                    "start": {
                                      "line": 63,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 63,
                                      "column": 39
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1855,
                                    "end": 1872,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 1855,
                                      "end": 1859,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1860,
                                      "end": 1872,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1873,
                                    "end": 1878,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 39
                                      }
                                    },
                                    "name": "merge"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 1879,
                                    "end": 1893,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 40
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 54
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1879,
                                      "end": 1890,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 40
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 51
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 1879,
                                        "end": 1885,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 46
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1886,
                                        "end": 1890,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 47
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 51
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 1891,
                                      "end": 1892,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 53
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  },
                                  {
                                    "type": "MemberExpression",
                                    "start": 1895,
                                    "end": 1909,
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 56
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 70
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1895,
                                      "end": 1906,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 56
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 67
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 1895,
                                        "end": 1901,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 62
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1902,
                                        "end": 1906,
                                        "loc": {
                                          "start": {
                                            "line": 63,
                                            "column": 63
                                          },
                                          "end": {
                                            "line": 63,
                                            "column": 67
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 1907,
                                      "end": 1908,
                                      "loc": {
                                        "start": {
                                          "line": 63,
                                          "column": 68
                                        },
                                        "end": {
                                          "line": 63,
                                          "column": 69
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 1924,
                            "end": 2033,
                            "loc": {
                              "start": {
                                "line": 64,
                                "column": 12
                              },
                              "end": {
                                "line": 65,
                                "column": 53
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 1928,
                              "end": 1978,
                              "loc": {
                                "start": {
                                  "line": 64,
                                  "column": 16
                                },
                                "end": {
                                  "line": 64,
                                  "column": 66
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 1928,
                                "end": 1943,
                                "loc": {
                                  "start": {
                                    "line": 64,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 64,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1928,
                                  "end": 1934,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1935,
                                  "end": 1943,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 1948,
                                "end": 1978,
                                "loc": {
                                  "start": {
                                    "line": 64,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 64,
                                    "column": 66
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 1948,
                                  "end": 1975,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 63
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1948,
                                    "end": 1963,
                                    "loc": {
                                      "start": {
                                        "line": 64,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 64,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 1948,
                                      "end": 1958,
                                      "loc": {
                                        "start": {
                                          "line": 64,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 64,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1959,
                                      "end": 1963,
                                      "loc": {
                                        "start": {
                                          "line": 64,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 64,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1964,
                                    "end": 1975,
                                    "loc": {
                                      "start": {
                                        "line": 64,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 64,
                                        "column": 63
                                      }
                                    },
                                    "name": "VERTICALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 1976,
                                  "end": 1977,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 64
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 65
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 1996,
                              "end": 2033,
                              "loc": {
                                "start": {
                                  "line": 65,
                                  "column": 16
                                },
                                "end": {
                                  "line": 65,
                                  "column": 53
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 1996,
                                "end": 2032,
                                "loc": {
                                  "start": {
                                    "line": 65,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 65,
                                    "column": 52
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 1996,
                                  "end": 2016,
                                  "loc": {
                                    "start": {
                                      "line": 65,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 65,
                                      "column": 36
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1996,
                                    "end": 2012,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 32
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 1996,
                                      "end": 2000,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2001,
                                      "end": 2012,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 32
                                        }
                                      },
                                      "name": "verticalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2013,
                                    "end": 2016,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 36
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2017,
                                    "end": 2031,
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2017,
                                      "end": 2028,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 48
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2017,
                                        "end": 2023,
                                        "loc": {
                                          "start": {
                                            "line": 65,
                                            "column": 37
                                          },
                                          "end": {
                                            "line": 65,
                                            "column": 43
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2024,
                                        "end": 2028,
                                        "loc": {
                                          "start": {
                                            "line": 65,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 65,
                                            "column": 48
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2029,
                                      "end": 2030,
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 49
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 50
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 2046,
                            "end": 2159,
                            "loc": {
                              "start": {
                                "line": 66,
                                "column": 12
                              },
                              "end": {
                                "line": 67,
                                "column": 55
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2050,
                              "end": 2102,
                              "loc": {
                                "start": {
                                  "line": 66,
                                  "column": 16
                                },
                                "end": {
                                  "line": 66,
                                  "column": 68
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2050,
                                "end": 2065,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2050,
                                  "end": 2056,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2057,
                                  "end": 2065,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2070,
                                "end": 2102,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 68
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2070,
                                  "end": 2099,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 65
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2070,
                                    "end": 2085,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2070,
                                      "end": 2080,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2081,
                                      "end": 2085,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2086,
                                    "end": 2099,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 65
                                      }
                                    },
                                    "name": "HORIZONTALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2100,
                                  "end": 2101,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 66
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 67
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2120,
                              "end": 2159,
                              "loc": {
                                "start": {
                                  "line": 67,
                                  "column": 16
                                },
                                "end": {
                                  "line": 67,
                                  "column": 55
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2120,
                                "end": 2158,
                                "loc": {
                                  "start": {
                                    "line": 67,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 67,
                                    "column": 54
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2120,
                                  "end": 2142,
                                  "loc": {
                                    "start": {
                                      "line": 67,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 67,
                                      "column": 38
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2120,
                                    "end": 2138,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 34
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2120,
                                      "end": 2124,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2125,
                                      "end": 2138,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 34
                                        }
                                      },
                                      "name": "horizontalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2139,
                                    "end": 2142,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 38
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2143,
                                    "end": 2157,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 39
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 53
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2143,
                                      "end": 2154,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2143,
                                        "end": 2149,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 39
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 45
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2150,
                                        "end": 2154,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 46
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 50
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2155,
                                      "end": 2156,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 51
                                        },
                                        "end": {
                                          "line": 67,
                                          "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": 2181,
                  "end": 2245,
                  "loc": {
                    "start": {
                      "line": 71,
                      "column": 4
                    },
                    "end": {
                      "line": 71,
                      "column": 68
                    }
                  },
                  "range": [
                    2181,
                    2245
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 2250,
              "end": 5037,
              "loc": {
                "start": {
                  "line": 72,
                  "column": 4
                },
                "end": {
                  "line": 133,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2250,
                "end": 2253,
                "loc": {
                  "start": {
                    "line": 72,
                    "column": 4
                  },
                  "end": {
                    "line": 72,
                    "column": 7
                  }
                },
                "name": "add",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2253,
                "end": 5037,
                "loc": {
                  "start": {
                    "line": 72,
                    "column": 7
                  },
                  "end": {
                    "line": 133,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2254,
                    "end": 2259,
                    "loc": {
                      "start": {
                        "line": 72,
                        "column": 8
                      },
                      "end": {
                        "line": 72,
                        "column": 13
                      }
                    },
                    "name": "types"
                  },
                  {
                    "type": "Identifier",
                    "start": 2261,
                    "end": 2265,
                    "loc": {
                      "start": {
                        "line": 72,
                        "column": 15
                      },
                      "end": {
                        "line": 72,
                        "column": 19
                      }
                    },
                    "name": "args"
                  },
                  {
                    "type": "Identifier",
                    "start": 2267,
                    "end": 2277,
                    "loc": {
                      "start": {
                        "line": 72,
                        "column": 21
                      },
                      "end": {
                        "line": 72,
                        "column": 31
                      }
                    },
                    "name": "attributes"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 2279,
                  "end": 5037,
                  "loc": {
                    "start": {
                      "line": 72,
                      "column": 33
                    },
                    "end": {
                      "line": 133,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 2289,
                      "end": 2305,
                      "loc": {
                        "start": {
                          "line": 73,
                          "column": 8
                        },
                        "end": {
                          "line": 73,
                          "column": 24
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 2293,
                          "end": 2304,
                          "loc": {
                            "start": {
                              "line": 73,
                              "column": 12
                            },
                            "end": {
                              "line": 73,
                              "column": 23
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 2293,
                            "end": 2296,
                            "loc": {
                              "start": {
                                "line": 73,
                                "column": 12
                              },
                              "end": {
                                "line": 73,
                                "column": 15
                              }
                            },
                            "name": "add"
                          },
                          "init": {
                            "type": "Literal",
                            "start": 2299,
                            "end": 2304,
                            "loc": {
                              "start": {
                                "line": 73,
                                "column": 18
                              },
                              "end": {
                                "line": 73,
                                "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": 2314,
                          "end": 2381,
                          "loc": {
                            "start": {
                              "line": 74,
                              "column": 8
                            },
                            "end": {
                              "line": 74,
                              "column": 75
                            }
                          },
                          "range": [
                            2314,
                            2381
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 2390,
                      "end": 4920,
                      "loc": {
                        "start": {
                          "line": 75,
                          "column": 8
                        },
                        "end": {
                          "line": 129,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 2394,
                        "end": 2429,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 12
                          },
                          "end": {
                            "line": 75,
                            "column": 47
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 2394,
                          "end": 2399,
                          "loc": {
                            "start": {
                              "line": 75,
                              "column": 12
                            },
                            "end": {
                              "line": 75,
                              "column": 17
                            }
                          },
                          "name": "types",
                          "leadingComments": null
                        },
                        "operator": "===",
                        "right": {
                          "type": "MemberExpression",
                          "start": 2404,
                          "end": 2429,
                          "loc": {
                            "start": {
                              "line": 75,
                              "column": 22
                            },
                            "end": {
                              "line": 75,
                              "column": 47
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 2404,
                            "end": 2419,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 22
                              },
                              "end": {
                                "line": 75,
                                "column": 37
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2404,
                              "end": 2414,
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 22
                                },
                                "end": {
                                  "line": 75,
                                  "column": 32
                                }
                              },
                              "name": "Constraint"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2415,
                              "end": 2419,
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 33
                                },
                                "end": {
                                  "line": 75,
                                  "column": 37
                                }
                              },
                              "name": "Type"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2420,
                            "end": 2429,
                            "loc": {
                              "start": {
                                "line": 75,
                                "column": 38
                              },
                              "end": {
                                "line": 75,
                                "column": 47
                              }
                            },
                            "name": "INCIDENCE"
                          },
                          "computed": false
                        },
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 2431,
                        "end": 2907,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 49
                          },
                          "end": {
                            "line": 83,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 2716,
                            "end": 2897,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 12
                              },
                              "end": {
                                "line": 82,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2720,
                              "end": 2793,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 16
                                },
                                "end": {
                                  "line": 79,
                                  "column": 89
                                }
                              },
                              "left": {
                                "type": "CallExpression",
                                "start": 2720,
                                "end": 2754,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 50
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2720,
                                  "end": 2745,
                                  "loc": {
                                    "start": {
                                      "line": 79,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 79,
                                      "column": 41
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2720,
                                    "end": 2737,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2720,
                                      "end": 2724,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 20
                                        }
                                      },
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2725,
                                      "end": 2737,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2738,
                                    "end": 2745,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 41
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false,
                                  "leadingComments": null
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2746,
                                    "end": 2753,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 49
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2746,
                                      "end": 2750,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 42
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 46
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2751,
                                      "end": 2752,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 48
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ],
                                "leadingComments": null
                              },
                              "operator": "!==",
                              "right": {
                                "type": "CallExpression",
                                "start": 2759,
                                "end": 2793,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 89
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2759,
                                  "end": 2784,
                                  "loc": {
                                    "start": {
                                      "line": 79,
                                      "column": 55
                                    },
                                    "end": {
                                      "line": 79,
                                      "column": 80
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2759,
                                    "end": 2776,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 55
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 72
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2759,
                                      "end": 2763,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 55
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 59
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2764,
                                      "end": 2776,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 60
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 72
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2777,
                                    "end": 2784,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 73
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 80
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2785,
                                    "end": 2792,
                                    "loc": {
                                      "start": {
                                        "line": 79,
                                        "column": 81
                                      },
                                      "end": {
                                        "line": 79,
                                        "column": 88
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2785,
                                      "end": 2789,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 81
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 85
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2790,
                                      "end": 2791,
                                      "loc": {
                                        "start": {
                                          "line": 79,
                                          "column": 86
                                        },
                                        "end": {
                                          "line": 79,
                                          "column": 87
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              },
                              "leadingComments": null
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 2795,
                              "end": 2897,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 91
                                },
                                "end": {
                                  "line": 82,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2813,
                                  "end": 2824,
                                  "loc": {
                                    "start": {
                                      "line": 80,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 80,
                                      "column": 27
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 2813,
                                    "end": 2823,
                                    "loc": {
                                      "start": {
                                        "line": 80,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 80,
                                        "column": 26
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 2813,
                                      "end": 2816,
                                      "loc": {
                                        "start": {
                                          "line": 80,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 80,
                                          "column": 19
                                        }
                                      },
                                      "name": "add"
                                    },
                                    "right": {
                                      "type": "Literal",
                                      "start": 2819,
                                      "end": 2823,
                                      "loc": {
                                        "start": {
                                          "line": 80,
                                          "column": 22
                                        },
                                        "end": {
                                          "line": 80,
                                          "column": 26
                                        }
                                      },
                                      "value": true,
                                      "rawValue": true,
                                      "raw": "true"
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2841,
                                  "end": 2883,
                                  "loc": {
                                    "start": {
                                      "line": 81,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 81,
                                      "column": 58
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 2841,
                                    "end": 2882,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 57
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 2841,
                                      "end": 2864,
                                      "loc": {
                                        "start": {
                                          "line": 81,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 81,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2841,
                                        "end": 2858,
                                        "loc": {
                                          "start": {
                                            "line": 81,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 81,
                                            "column": 33
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 2841,
                                          "end": 2845,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 20
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 2846,
                                          "end": 2858,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 21
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 33
                                            }
                                          },
                                          "name": "incidenceDsu"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2859,
                                        "end": 2864,
                                        "loc": {
                                          "start": {
                                            "line": 81,
                                            "column": 34
                                          },
                                          "end": {
                                            "line": 81,
                                            "column": 39
                                          }
                                        },
                                        "name": "merge"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 2865,
                                        "end": 2872,
                                        "loc": {
                                          "start": {
                                            "line": 81,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 81,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2865,
                                          "end": 2869,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 2870,
                                          "end": 2871,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      },
                                      {
                                        "type": "MemberExpression",
                                        "start": 2874,
                                        "end": 2881,
                                        "loc": {
                                          "start": {
                                            "line": 81,
                                            "column": 49
                                          },
                                          "end": {
                                            "line": 81,
                                            "column": 56
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2874,
                                          "end": 2878,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 49
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 53
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 2879,
                                          "end": 2880,
                                          "loc": {
                                            "start": {
                                              "line": 81,
                                              "column": 54
                                            },
                                            "end": {
                                              "line": 81,
                                              "column": 55
                                            }
                                          },
                                          "value": 1,
                                          "rawValue": 1,
                                          "raw": "1"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "alternate": null,
                            "leadingComments": [
                              {
                                "type": "CommentLine",
                                "value": "TODO: implemented more complicated handling of incidence",
                                "start": 2445,
                                "end": 2503,
                                "loc": {
                                  "start": {
                                    "line": 76,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 76,
                                    "column": 70
                                  }
                                },
                                "range": [
                                  2445,
                                  2503
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
                                "start": 2516,
                                "end": 2608,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 104
                                  }
                                },
                                "range": [
                                  2516,
                                  2608
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
                                "start": 2621,
                                "end": 2703,
                                "loc": {
                                  "start": {
                                    "line": 78,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 78,
                                    "column": 94
                                  }
                                },
                                "range": [
                                  2621,
                                  2703
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      "alternate": {
                        "type": "IfStatement",
                        "start": 2921,
                        "end": 4920,
                        "loc": {
                          "start": {
                            "line": 84,
                            "column": 13
                          },
                          "end": {
                            "line": 129,
                            "column": 9
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 2925,
                          "end": 2962,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 17
                            },
                            "end": {
                              "line": 84,
                              "column": 54
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 2925,
                            "end": 2930,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 17
                              },
                              "end": {
                                "line": 84,
                                "column": 22
                              }
                            },
                            "name": "types"
                          },
                          "operator": "===",
                          "right": {
                            "type": "MemberExpression",
                            "start": 2935,
                            "end": 2962,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 27
                              },
                              "end": {
                                "line": 84,
                                "column": 54
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 2935,
                              "end": 2950,
                              "loc": {
                                "start": {
                                  "line": 84,
                                  "column": 27
                                },
                                "end": {
                                  "line": 84,
                                  "column": 42
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 2935,
                                "end": 2945,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 37
                                  }
                                },
                                "name": "Constraint"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 2946,
                                "end": 2950,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 42
                                  }
                                },
                                "name": "Type"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2951,
                              "end": 2962,
                              "loc": {
                                "start": {
                                  "line": 84,
                                  "column": 43
                                },
                                "end": {
                                  "line": 84,
                                  "column": 54
                                }
                              },
                              "name": "VERTICALITY"
                            },
                            "computed": false
                          }
                        },
                        "consequent": {
                          "type": "BlockStatement",
                          "start": 2964,
                          "end": 3114,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 56
                            },
                            "end": {
                              "line": 89,
                              "column": 9
                            }
                          },
                          "body": [
                            {
                              "type": "IfStatement",
                              "start": 2978,
                              "end": 3104,
                              "loc": {
                                "start": {
                                  "line": 85,
                                  "column": 12
                                },
                                "end": {
                                  "line": 88,
                                  "column": 13
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 2982,
                                "end": 3012,
                                "loc": {
                                  "start": {
                                    "line": 85,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 85,
                                    "column": 46
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 2983,
                                  "end": 3012,
                                  "loc": {
                                    "start": {
                                      "line": 85,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 85,
                                      "column": 46
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2983,
                                    "end": 3003,
                                    "loc": {
                                      "start": {
                                        "line": 85,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 85,
                                        "column": 37
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2983,
                                      "end": 2999,
                                      "loc": {
                                        "start": {
                                          "line": 85,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 85,
                                          "column": 33
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2983,
                                        "end": 2987,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 21
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2988,
                                        "end": 2999,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 33
                                          }
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3000,
                                      "end": 3003,
                                      "loc": {
                                        "start": {
                                          "line": 85,
                                          "column": 34
                                        },
                                        "end": {
                                          "line": 85,
                                          "column": 37
                                        }
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 3004,
                                      "end": 3011,
                                      "loc": {
                                        "start": {
                                          "line": 85,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 85,
                                          "column": 45
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3004,
                                        "end": 3008,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 38
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 42
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "property": {
                                        "type": "Literal",
                                        "start": 3009,
                                        "end": 3010,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 44
                                          }
                                        },
                                        "value": 0,
                                        "rawValue": 0,
                                        "raw": "0"
                                      },
                                      "computed": true
                                    }
                                  ]
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "start": 3014,
                                "end": 3104,
                                "loc": {
                                  "start": {
                                    "line": 85,
                                    "column": 48
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 13
                                  }
                                },
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3032,
                                    "end": 3043,
                                    "loc": {
                                      "start": {
                                        "line": 86,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 86,
                                        "column": 27
                                      }
                                    },
                                    "expression": {
                                      "type": "AssignmentExpression",
                                      "start": 3032,
                                      "end": 3042,
                                      "loc": {
                                        "start": {
                                          "line": 86,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 86,
                                          "column": 26
                                        }
                                      },
                                      "operator": "=",
                                      "left": {
                                        "type": "Identifier",
                                        "start": 3032,
                                        "end": 3035,
                                        "loc": {
                                          "start": {
                                            "line": 86,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 86,
                                            "column": 19
                                          }
                                        },
                                        "name": "add"
                                      },
                                      "right": {
                                        "type": "Literal",
                                        "start": 3038,
                                        "end": 3042,
                                        "loc": {
                                          "start": {
                                            "line": 86,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 86,
                                            "column": 26
                                          }
                                        },
                                        "value": true,
                                        "rawValue": true,
                                        "raw": "true"
                                      }
                                    }
                                  },
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3060,
                                    "end": 3090,
                                    "loc": {
                                      "start": {
                                        "line": 87,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 87,
                                        "column": 46
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 3060,
                                      "end": 3089,
                                      "loc": {
                                        "start": {
                                          "line": 87,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 87,
                                          "column": 45
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3060,
                                        "end": 3080,
                                        "loc": {
                                          "start": {
                                            "line": 87,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 87,
                                            "column": 36
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3060,
                                          "end": 3076,
                                          "loc": {
                                            "start": {
                                              "line": 87,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 87,
                                              "column": 32
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3060,
                                            "end": 3064,
                                            "loc": {
                                              "start": {
                                                "line": 87,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 87,
                                                "column": 20
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3065,
                                            "end": 3076,
                                            "loc": {
                                              "start": {
                                                "line": 87,
                                                "column": 21
                                              },
                                              "end": {
                                                "line": 87,
                                                "column": 32
                                              }
                                            },
                                            "name": "verticalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3077,
                                          "end": 3080,
                                          "loc": {
                                            "start": {
                                              "line": 87,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 87,
                                              "column": 36
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 3081,
                                          "end": 3088,
                                          "loc": {
                                            "start": {
                                              "line": 87,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 87,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 3081,
                                            "end": 3085,
                                            "loc": {
                                              "start": {
                                                "line": 87,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 87,
                                                "column": 41
                                              }
                                            },
                                            "name": "args"
                                          },
                                          "property": {
                                            "type": "Literal",
                                            "start": 3086,
                                            "end": 3087,
                                            "loc": {
                                              "start": {
                                                "line": 87,
                                                "column": 42
                                              },
                                              "end": {
                                                "line": 87,
                                                "column": 43
                                              }
                                            },
                                            "value": 0,
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "computed": true
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "alternate": null
                            }
                          ]
                        },
                        "alternate": {
                          "type": "IfStatement",
                          "start": 3128,
                          "end": 4920,
                          "loc": {
                            "start": {
                              "line": 90,
                              "column": 13
                            },
                            "end": {
                              "line": 129,
                              "column": 9
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 3132,
                            "end": 3171,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 17
                              },
                              "end": {
                                "line": 90,
                                "column": 56
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 3132,
                              "end": 3137,
                              "loc": {
                                "start": {
                                  "line": 90,
                                  "column": 17
                                },
                                "end": {
                                  "line": 90,
                                  "column": 22
                                }
                              },
                              "name": "types"
                            },
                            "operator": "===",
                            "right": {
                              "type": "MemberExpression",
                              "start": 3142,
                              "end": 3171,
                              "loc": {
                                "start": {
                                  "line": 90,
                                  "column": 27
                                },
                                "end": {
                                  "line": 90,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3142,
                                "end": 3157,
                                "loc": {
                                  "start": {
                                    "line": 90,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 90,
                                    "column": 42
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 3142,
                                  "end": 3152,
                                  "loc": {
                                    "start": {
                                      "line": 90,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 90,
                                      "column": 37
                                    }
                                  },
                                  "name": "Constraint"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3153,
                                  "end": 3157,
                                  "loc": {
                                    "start": {
                                      "line": 90,
                                      "column": 38
                                    },
                                    "end": {
                                      "line": 90,
                                      "column": 42
                                    }
                                  },
                                  "name": "Type"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3158,
                                "end": 3171,
                                "loc": {
                                  "start": {
                                    "line": 90,
                                    "column": 43
                                  },
                                  "end": {
                                    "line": 90,
                                    "column": 56
                                  }
                                },
                                "name": "HORIZONTALITY"
                              },
                              "computed": false
                            }
                          },
                          "consequent": {
                            "type": "BlockStatement",
                            "start": 3173,
                            "end": 3327,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 58
                              },
                              "end": {
                                "line": 95,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "IfStatement",
                                "start": 3187,
                                "end": 3317,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 94,
                                    "column": 13
                                  }
                                },
                                "test": {
                                  "type": "UnaryExpression",
                                  "start": 3191,
                                  "end": 3223,
                                  "loc": {
                                    "start": {
                                      "line": 91,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 91,
                                      "column": 48
                                    }
                                  },
                                  "operator": "!",
                                  "prefix": true,
                                  "argument": {
                                    "type": "CallExpression",
                                    "start": 3192,
                                    "end": 3223,
                                    "loc": {
                                      "start": {
                                        "line": 91,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 91,
                                        "column": 48
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3192,
                                      "end": 3214,
                                      "loc": {
                                        "start": {
                                          "line": 91,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 91,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 3192,
                                        "end": 3210,
                                        "loc": {
                                          "start": {
                                            "line": 91,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 91,
                                            "column": 35
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3192,
                                          "end": 3196,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 21
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3197,
                                          "end": 3210,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 35
                                            }
                                          },
                                          "name": "horizontalSet"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3211,
                                        "end": 3214,
                                        "loc": {
                                          "start": {
                                            "line": 91,
                                            "column": 36
                                          },
                                          "end": {
                                            "line": 91,
                                            "column": 39
                                          }
                                        },
                                        "name": "has"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3215,
                                        "end": 3222,
                                        "loc": {
                                          "start": {
                                            "line": 91,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 91,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3215,
                                          "end": 3219,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 3220,
                                          "end": 3221,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                },
                                "consequent": {
                                  "type": "BlockStatement",
                                  "start": 3225,
                                  "end": 3317,
                                  "loc": {
                                    "start": {
                                      "line": 91,
                                      "column": 50
                                    },
                                    "end": {
                                      "line": 94,
                                      "column": 13
                                    }
                                  },
                                  "body": [
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3243,
                                      "end": 3254,
                                      "loc": {
                                        "start": {
                                          "line": 92,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 92,
                                          "column": 27
                                        }
                                      },
                                      "expression": {
                                        "type": "AssignmentExpression",
                                        "start": 3243,
                                        "end": 3253,
                                        "loc": {
                                          "start": {
                                            "line": 92,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 92,
                                            "column": 26
                                          }
                                        },
                                        "operator": "=",
                                        "left": {
                                          "type": "Identifier",
                                          "start": 3243,
                                          "end": 3246,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 19
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "right": {
                                          "type": "Literal",
                                          "start": 3249,
                                          "end": 3253,
                                          "loc": {
                                            "start": {
                                              "line": 92,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 92,
                                              "column": 26
                                            }
                                          },
                                          "value": true,
                                          "rawValue": true,
                                          "raw": "true"
                                        }
                                      }
                                    },
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3271,
                                      "end": 3303,
                                      "loc": {
                                        "start": {
                                          "line": 93,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 93,
                                          "column": 48
                                        }
                                      },
                                      "expression": {
                                        "type": "CallExpression",
                                        "start": 3271,
                                        "end": 3302,
                                        "loc": {
                                          "start": {
                                            "line": 93,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 93,
                                            "column": 47
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 3271,
                                          "end": 3293,
                                          "loc": {
                                            "start": {
                                              "line": 93,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 93,
                                              "column": 38
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 3271,
                                            "end": 3289,
                                            "loc": {
                                              "start": {
                                                "line": 93,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 93,
                                                "column": 34
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 3271,
                                              "end": 3275,
                                              "loc": {
                                                "start": {
                                                  "line": 93,
                                                  "column": 16
                                                },
                                                "end": {
                                                  "line": 93,
                                                  "column": 20
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3276,
                                              "end": 3289,
                                              "loc": {
                                                "start": {
                                                  "line": 93,
                                                  "column": 21
                                                },
                                                "end": {
                                                  "line": 93,
                                                  "column": 34
                                                }
                                              },
                                              "name": "horizontalSet"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3290,
                                            "end": 3293,
                                            "loc": {
                                              "start": {
                                                "line": 93,
                                                "column": 35
                                              },
                                              "end": {
                                                "line": 93,
                                                "column": 38
                                              }
                                            },
                                            "name": "add"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 3294,
                                            "end": 3301,
                                            "loc": {
                                              "start": {
                                                "line": 93,
                                                "column": 39
                                              },
                                              "end": {
                                                "line": 93,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3294,
                                              "end": 3298,
                                              "loc": {
                                                "start": {
                                                  "line": 93,
                                                  "column": 39
                                                },
                                                "end": {
                                                  "line": 93,
                                                  "column": 43
                                                }
                                              },
                                              "name": "args"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 3299,
                                              "end": 3300,
                                              "loc": {
                                                "start": {
                                                  "line": 93,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 93,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                },
                                "alternate": null
                              }
                            ]
                          },
                          "alternate": {
                            "type": "BlockStatement",
                            "start": 3341,
                            "end": 4920,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 13
                              },
                              "end": {
                                "line": 129,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "VariableDeclaration",
                                "start": 3355,
                                "end": 3413,
                                "loc": {
                                  "start": {
                                    "line": 97,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 97,
                                    "column": 70
                                  }
                                },
                                "declarations": [
                                  {
                                    "type": "VariableDeclarator",
                                    "start": 3359,
                                    "end": 3412,
                                    "loc": {
                                      "start": {
                                        "line": 97,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 97,
                                        "column": 69
                                      }
                                    },
                                    "id": {
                                      "type": "Identifier",
                                      "start": 3359,
                                      "end": 3373,
                                      "loc": {
                                        "start": {
                                          "line": 97,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 97,
                                          "column": 30
                                        }
                                      },
                                      "name": "allConstraints"
                                    },
                                    "init": {
                                      "type": "CallExpression",
                                      "start": 3376,
                                      "end": 3412,
                                      "loc": {
                                        "start": {
                                          "line": 97,
                                          "column": 33
                                        },
                                        "end": {
                                          "line": 97,
                                          "column": 69
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3376,
                                        "end": 3410,
                                        "loc": {
                                          "start": {
                                            "line": 97,
                                            "column": 33
                                          },
                                          "end": {
                                            "line": 97,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3376,
                                          "end": 3387,
                                          "loc": {
                                            "start": {
                                              "line": 97,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 97,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3376,
                                            "end": 3380,
                                            "loc": {
                                              "start": {
                                                "line": 97,
                                                "column": 33
                                              },
                                              "end": {
                                                "line": 97,
                                                "column": 37
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3381,
                                            "end": 3387,
                                            "loc": {
                                              "start": {
                                                "line": 97,
                                                "column": 38
                                              },
                                              "end": {
                                                "line": 97,
                                                "column": 44
                                              }
                                            },
                                            "name": "sketch"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3388,
                                          "end": 3410,
                                          "loc": {
                                            "start": {
                                              "line": 97,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 97,
                                              "column": 67
                                            }
                                          },
                                          "name": "getConstraintsOnSketch"
                                        },
                                        "computed": false
                                      },
                                      "arguments": []
                                    }
                                  }
                                ],
                                "kind": "var"
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3426,
                                "end": 3492,
                                "loc": {
                                  "start": {
                                    "line": 98,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 98,
                                    "column": 78
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3426,
                                  "end": 3491,
                                  "loc": {
                                    "start": {
                                      "line": 98,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 98,
                                      "column": 77
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3426,
                                    "end": 3440,
                                    "loc": {
                                      "start": {
                                        "line": 98,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 98,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3443,
                                    "end": 3491,
                                    "loc": {
                                      "start": {
                                        "line": 98,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 98,
                                        "column": 77
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3443,
                                      "end": 3461,
                                      "loc": {
                                        "start": {
                                          "line": 98,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 98,
                                          "column": 47
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3443,
                                        "end": 3457,
                                        "loc": {
                                          "start": {
                                            "line": 98,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 98,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3458,
                                        "end": 3461,
                                        "loc": {
                                          "start": {
                                            "line": 98,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 98,
                                            "column": 47
                                          }
                                        },
                                        "name": "map"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "ArrowFunctionExpression",
                                        "start": 3462,
                                        "end": 3490,
                                        "loc": {
                                          "start": {
                                            "line": 98,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 98,
                                            "column": 76
                                          }
                                        },
                                        "id": null,
                                        "generator": false,
                                        "expression": true,
                                        "async": false,
                                        "params": [
                                          {
                                            "type": "Identifier",
                                            "start": 3463,
                                            "end": 3469,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 49
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 55
                                              }
                                            },
                                            "name": "constr"
                                          }
                                        ],
                                        "body": {
                                          "type": "CallExpression",
                                          "start": 3474,
                                          "end": 3490,
                                          "loc": {
                                            "start": {
                                              "line": 98,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 98,
                                              "column": 76
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 3474,
                                            "end": 3488,
                                            "loc": {
                                              "start": {
                                                "line": 98,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 98,
                                                "column": 74
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3474,
                                              "end": 3480,
                                              "loc": {
                                                "start": {
                                                  "line": 98,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 98,
                                                  "column": 66
                                                }
                                              },
                                              "name": "constr"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3481,
                                              "end": 3488,
                                              "loc": {
                                                "start": {
                                                  "line": 98,
                                                  "column": 67
                                                },
                                                "end": {
                                                  "line": 98,
                                                  "column": 74
                                                }
                                              },
                                              "name": "getData"
                                            },
                                            "computed": false
                                          },
                                          "arguments": []
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3505,
                                "end": 3562,
                                "loc": {
                                  "start": {
                                    "line": 99,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 69
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3505,
                                  "end": 3561,
                                  "loc": {
                                    "start": {
                                      "line": 99,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 99,
                                      "column": 68
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3505,
                                    "end": 3519,
                                    "loc": {
                                      "start": {
                                        "line": 99,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 99,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3522,
                                    "end": 3561,
                                    "loc": {
                                      "start": {
                                        "line": 99,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 99,
                                        "column": 68
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3522,
                                      "end": 3543,
                                      "loc": {
                                        "start": {
                                          "line": 99,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 99,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3522,
                                        "end": 3536,
                                        "loc": {
                                          "start": {
                                            "line": 99,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 99,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3537,
                                        "end": 3543,
                                        "loc": {
                                          "start": {
                                            "line": 99,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 99,
                                            "column": 50
                                          }
                                        },
                                        "name": "concat"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3544,
                                        "end": 3560,
                                        "loc": {
                                          "start": {
                                            "line": 99,
                                            "column": 51
                                          },
                                          "end": {
                                            "line": 99,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3544,
                                          "end": 3548,
                                          "loc": {
                                            "start": {
                                              "line": 99,
                                              "column": 51
                                            },
                                            "end": {
                                              "line": 99,
                                              "column": 55
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3549,
                                          "end": 3560,
                                          "loc": {
                                            "start": {
                                              "line": 99,
                                              "column": 56
                                            },
                                            "end": {
                                              "line": 99,
                                              "column": 67
                                            }
                                          },
                                          "name": "constraints"
                                        },
                                        "computed": false
                                      }
                                    ]
                                  }
                                },
                                "trailingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3575,
                                    "end": 3608,
                                    "loc": {
                                      "start": {
                                        "line": 100,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 100,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3575,
                                      3608
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3621,
                                "end": 4910,
                                "loc": {
                                  "start": {
                                    "line": 101,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 128,
                                    "column": 15
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3621,
                                  "end": 4909,
                                  "loc": {
                                    "start": {
                                      "line": 101,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 128,
                                      "column": 14
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3621,
                                    "end": 3624,
                                    "loc": {
                                      "start": {
                                        "line": 101,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 101,
                                        "column": 15
                                      }
                                    },
                                    "name": "add",
                                    "leadingComments": null
                                  },
                                  "right": {
                                    "type": "UnaryExpression",
                                    "start": 3627,
                                    "end": 4909,
                                    "loc": {
                                      "start": {
                                        "line": 101,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 128,
                                        "column": 14
                                      }
                                    },
                                    "operator": "!",
                                    "prefix": true,
                                    "argument": {
                                      "type": "CallExpression",
                                      "start": 3628,
                                      "end": 4909,
                                      "loc": {
                                        "start": {
                                          "line": 101,
                                          "column": 19
                                        },
                                        "end": {
                                          "line": 128,
                                          "column": 14
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3628,
                                        "end": 3647,
                                        "loc": {
                                          "start": {
                                            "line": 101,
                                            "column": 19
                                          },
                                          "end": {
                                            "line": 101,
                                            "column": 38
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3628,
                                          "end": 3642,
                                          "loc": {
                                            "start": {
                                              "line": 101,
                                              "column": 19
                                            },
                                            "end": {
                                              "line": 101,
                                              "column": 33
                                            }
                                          },
                                          "name": "allConstraints"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3643,
                                          "end": 3647,
                                          "loc": {
                                            "start": {
                                              "line": 101,
                                              "column": 34
                                            },
                                            "end": {
                                              "line": 101,
                                              "column": 38
                                            }
                                          },
                                          "name": "some"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "ArrowFunctionExpression",
                                          "start": 3648,
                                          "end": 4908,
                                          "loc": {
                                            "start": {
                                              "line": 101,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 128,
                                              "column": 13
                                            }
                                          },
                                          "id": null,
                                          "generator": false,
                                          "expression": false,
                                          "async": false,
                                          "params": [
                                            {
                                              "type": "Identifier",
                                              "start": 3649,
                                              "end": 3655,
                                              "loc": {
                                                "start": {
                                                  "line": 101,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 101,
                                                  "column": 46
                                                }
                                              },
                                              "name": "constr"
                                            }
                                          ],
                                          "body": {
                                            "type": "BlockStatement",
                                            "start": 3660,
                                            "end": 4908,
                                            "loc": {
                                              "start": {
                                                "line": 101,
                                                "column": 51
                                              },
                                              "end": {
                                                "line": 128,
                                                "column": 13
                                              }
                                            },
                                            "body": [
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 3678,
                                                "end": 3745,
                                                "loc": {
                                                  "start": {
                                                    "line": 102,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 102,
                                                    "column": 83
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3682,
                                                    "end": 3700,
                                                    "loc": {
                                                      "start": {
                                                        "line": 102,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 102,
                                                        "column": 38
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3682,
                                                      "end": 3688,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3691,
                                                      "end": 3700,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 29
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 38
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3691,
                                                        "end": 3697,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 29
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 35
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3698,
                                                        "end": 3699,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 36
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 37
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3702,
                                                    "end": 3719,
                                                    "loc": {
                                                      "start": {
                                                        "line": 102,
                                                        "column": 40
                                                      },
                                                      "end": {
                                                        "line": 102,
                                                        "column": 57
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3702,
                                                      "end": 3707,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 45
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3710,
                                                      "end": 3719,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 48
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 57
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3710,
                                                        "end": 3716,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 48
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 54
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3717,
                                                        "end": 3718,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 55
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 56
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3721,
                                                    "end": 3744,
                                                    "loc": {
                                                      "start": {
                                                        "line": 102,
                                                        "column": 59
                                                      },
                                                      "end": {
                                                        "line": 102,
                                                        "column": 82
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3721,
                                                      "end": 3732,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 59
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 70
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3735,
                                                      "end": 3744,
                                                      "loc": {
                                                        "start": {
                                                          "line": 102,
                                                          "column": 73
                                                        },
                                                        "end": {
                                                          "line": 102,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3735,
                                                        "end": 3741,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 73
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 79
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3742,
                                                        "end": 3743,
                                                        "loc": {
                                                          "start": {
                                                            "line": 102,
                                                            "column": 80
                                                          },
                                                          "end": {
                                                            "line": 102,
                                                            "column": 81
                                                          }
                                                        },
                                                        "value": 2,
                                                        "rawValue": 2,
                                                        "raw": "2"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 3762,
                                                "end": 3823,
                                                "loc": {
                                                  "start": {
                                                    "line": 103,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 104,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 3766,
                                                  "end": 3788,
                                                  "loc": {
                                                    "start": {
                                                      "line": 103,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 103,
                                                      "column": 42
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 3766,
                                                    "end": 3775,
                                                    "loc": {
                                                      "start": {
                                                        "line": 103,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 103,
                                                        "column": 29
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3766,
                                                      "end": 3772,
                                                      "loc": {
                                                        "start": {
                                                          "line": 103,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 103,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 3773,
                                                      "end": 3774,
                                                      "loc": {
                                                        "start": {
                                                          "line": 103,
                                                          "column": 27
                                                        },
                                                        "end": {
                                                          "line": 103,
                                                          "column": 28
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 3780,
                                                    "end": 3788,
                                                    "loc": {
                                                      "start": {
                                                        "line": 103,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 103,
                                                        "column": 42
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3780,
                                                      "end": 3785,
                                                      "loc": {
                                                        "start": {
                                                          "line": 103,
                                                          "column": 34
                                                        },
                                                        "end": {
                                                          "line": 103,
                                                          "column": 39
                                                        }
                                                      },
                                                      "name": "types"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 3786,
                                                      "end": 3787,
                                                      "loc": {
                                                        "start": {
                                                          "line": 103,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 103,
                                                          "column": 41
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 3810,
                                                  "end": 3823,
                                                  "loc": {
                                                    "start": {
                                                      "line": 104,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 104,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 3817,
                                                    "end": 3822,
                                                    "loc": {
                                                      "start": {
                                                        "line": 104,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 104,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 3840,
                                                "end": 3906,
                                                "loc": {
                                                  "start": {
                                                    "line": 105,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 106,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 3844,
                                                  "end": 3871,
                                                  "loc": {
                                                    "start": {
                                                      "line": 105,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 105,
                                                      "column": 47
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 3844,
                                                    "end": 3856,
                                                    "loc": {
                                                      "start": {
                                                        "line": 105,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 105,
                                                        "column": 32
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3844,
                                                      "end": 3849,
                                                      "loc": {
                                                        "start": {
                                                          "line": 105,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 105,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3850,
                                                      "end": 3856,
                                                      "loc": {
                                                        "start": {
                                                          "line": 105,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 105,
                                                          "column": 32
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  },
                                                  "operator": "!=",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 3860,
                                                    "end": 3871,
                                                    "loc": {
                                                      "start": {
                                                        "line": 105,
                                                        "column": 36
                                                      },
                                                      "end": {
                                                        "line": 105,
                                                        "column": 47
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3860,
                                                      "end": 3864,
                                                      "loc": {
                                                        "start": {
                                                          "line": 105,
                                                          "column": 36
                                                        },
                                                        "end": {
                                                          "line": 105,
                                                          "column": 40
                                                        }
                                                      },
                                                      "name": "args"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3865,
                                                      "end": 3871,
                                                      "loc": {
                                                        "start": {
                                                          "line": 105,
                                                          "column": 41
                                                        },
                                                        "end": {
                                                          "line": 105,
                                                          "column": 47
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 3893,
                                                  "end": 3906,
                                                  "loc": {
                                                    "start": {
                                                      "line": 106,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 106,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 3900,
                                                    "end": 3905,
                                                    "loc": {
                                                      "start": {
                                                        "line": 106,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 106,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 3923,
                                                "end": 4050,
                                                "loc": {
                                                  "start": {
                                                    "line": 107,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 108,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 3927,
                                                  "end": 4015,
                                                  "loc": {
                                                    "start": {
                                                      "line": 107,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 107,
                                                      "column": 108
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 3927,
                                                    "end": 3989,
                                                    "loc": {
                                                      "start": {
                                                        "line": 107,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 107,
                                                        "column": 82
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "LogicalExpression",
                                                      "start": 3927,
                                                      "end": 3964,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 57
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 3927,
                                                        "end": 3943,
                                                        "loc": {
                                                          "start": {
                                                            "line": 107,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 107,
                                                            "column": 36
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 3927,
                                                          "end": 3937,
                                                          "loc": {
                                                            "start": {
                                                              "line": 107,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 107,
                                                              "column": 30
                                                            }
                                                          },
                                                          "name": "attributes"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 3938,
                                                          "end": 3943,
                                                          "loc": {
                                                            "start": {
                                                              "line": 107,
                                                              "column": 31
                                                            },
                                                            "end": {
                                                              "line": 107,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      },
                                                      "operator": "||",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 3947,
                                                        "end": 3964,
                                                        "loc": {
                                                          "start": {
                                                            "line": 107,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 107,
                                                            "column": 57
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 3947,
                                                          "end": 3958,
                                                          "loc": {
                                                            "start": {
                                                              "line": 107,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 107,
                                                              "column": 51
                                                            }
                                                          },
                                                          "name": "attributes2"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 3959,
                                                          "end": 3964,
                                                          "loc": {
                                                            "start": {
                                                              "line": 107,
                                                              "column": 52
                                                            },
                                                            "end": {
                                                              "line": 107,
                                                              "column": 57
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      }
                                                    },
                                                    "operator": "||",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 3968,
                                                      "end": 3989,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 61
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3968,
                                                        "end": 3978,
                                                        "loc": {
                                                          "start": {
                                                            "line": 107,
                                                            "column": 61
                                                          },
                                                          "end": {
                                                            "line": 107,
                                                            "column": 71
                                                          }
                                                        },
                                                        "name": "attributes"
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 3979,
                                                        "end": 3989,
                                                        "loc": {
                                                          "start": {
                                                            "line": 107,
                                                            "column": 72
                                                          },
                                                          "end": {
                                                            "line": 107,
                                                            "column": 82
                                                          }
                                                        },
                                                        "name": "expression"
                                                      },
                                                      "computed": false
                                                    }
                                                  },
                                                  "operator": "||",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 3993,
                                                    "end": 4015,
                                                    "loc": {
                                                      "start": {
                                                        "line": 107,
                                                        "column": 86
                                                      },
                                                      "end": {
                                                        "line": 107,
                                                        "column": 108
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3993,
                                                      "end": 4004,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 86
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 97
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4005,
                                                      "end": 4015,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 98
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 108
                                                        }
                                                      },
                                                      "name": "expression"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4037,
                                                  "end": 4050,
                                                  "loc": {
                                                    "start": {
                                                      "line": 108,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 108,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4044,
                                                    "end": 4049,
                                                    "loc": {
                                                      "start": {
                                                        "line": 108,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 108,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  },
                                                  "trailingComments": null
                                                },
                                                "alternate": null,
                                                "trailingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4051,
                                                    "end": 4082,
                                                    "loc": {
                                                      "start": {
                                                        "line": 108,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 108,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4051,
                                                      4082
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4100,
                                                "end": 4182,
                                                "loc": {
                                                  "start": {
                                                    "line": 110,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 111,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "CallExpression",
                                                  "start": 4104,
                                                  "end": 4148,
                                                  "loc": {
                                                    "start": {
                                                      "line": 110,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 110,
                                                      "column": 64
                                                    }
                                                  },
                                                  "callee": {
                                                    "type": "MemberExpression",
                                                    "start": 4104,
                                                    "end": 4115,
                                                    "loc": {
                                                      "start": {
                                                        "line": 110,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 110,
                                                        "column": 31
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4104,
                                                      "end": 4109,
                                                      "loc": {
                                                        "start": {
                                                          "line": 110,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 110,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2",
                                                      "leadingComments": null
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4110,
                                                      "end": 4115,
                                                      "loc": {
                                                        "start": {
                                                          "line": 110,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 110,
                                                          "column": 31
                                                        }
                                                      },
                                                      "name": "every"
                                                    },
                                                    "computed": false,
                                                    "leadingComments": null
                                                  },
                                                  "arguments": [
                                                    {
                                                      "type": "ArrowFunctionExpression",
                                                      "start": 4116,
                                                      "end": 4147,
                                                      "loc": {
                                                        "start": {
                                                          "line": 110,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 110,
                                                          "column": 63
                                                        }
                                                      },
                                                      "id": null,
                                                      "generator": false,
                                                      "expression": true,
                                                      "async": false,
                                                      "params": [
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4117,
                                                          "end": 4120,
                                                          "loc": {
                                                            "start": {
                                                              "line": 110,
                                                              "column": 33
                                                            },
                                                            "end": {
                                                              "line": 110,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4122,
                                                          "end": 4125,
                                                          "loc": {
                                                            "start": {
                                                              "line": 110,
                                                              "column": 38
                                                            },
                                                            "end": {
                                                              "line": 110,
                                                              "column": 41
                                                            }
                                                          },
                                                          "name": "idx"
                                                        }
                                                      ],
                                                      "body": {
                                                        "type": "BinaryExpression",
                                                        "start": 4130,
                                                        "end": 4147,
                                                        "loc": {
                                                          "start": {
                                                            "line": 110,
                                                            "column": 46
                                                          },
                                                          "end": {
                                                            "line": 110,
                                                            "column": 63
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "Identifier",
                                                          "start": 4130,
                                                          "end": 4133,
                                                          "loc": {
                                                            "start": {
                                                              "line": 110,
                                                              "column": 46
                                                            },
                                                            "end": {
                                                              "line": 110,
                                                              "column": 49
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        "operator": "===",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 4138,
                                                          "end": 4147,
                                                          "loc": {
                                                            "start": {
                                                              "line": 110,
                                                              "column": 54
                                                            },
                                                            "end": {
                                                              "line": 110,
                                                              "column": 63
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 4138,
                                                            "end": 4142,
                                                            "loc": {
                                                              "start": {
                                                                "line": 110,
                                                                "column": 54
                                                              },
                                                              "end": {
                                                                "line": 110,
                                                                "column": 58
                                                              }
                                                            },
                                                            "name": "args"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 4143,
                                                            "end": 4146,
                                                            "loc": {
                                                              "start": {
                                                                "line": 110,
                                                                "column": 59
                                                              },
                                                              "end": {
                                                                "line": 110,
                                                                "column": 62
                                                              }
                                                            },
                                                            "name": "idx"
                                                          },
                                                          "computed": true
                                                        }
                                                      }
                                                    }
                                                  ],
                                                  "leadingComments": null
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4170,
                                                  "end": 4182,
                                                  "loc": {
                                                    "start": {
                                                      "line": 111,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 111,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4177,
                                                    "end": 4181,
                                                    "loc": {
                                                      "start": {
                                                        "line": 111,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 111,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null,
                                                "leadingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4051,
                                                    "end": 4082,
                                                    "loc": {
                                                      "start": {
                                                        "line": 108,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 108,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4051,
                                                      4082
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 4200,
                                                "end": 4718,
                                                "loc": {
                                                  "start": {
                                                    "line": 113,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 123,
                                                    "column": 37
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4204,
                                                    "end": 4717,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 123,
                                                        "column": 36
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4204,
                                                      "end": 4221,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 37
                                                        }
                                                      },
                                                      "name": "binaryCommutative"
                                                    },
                                                    "init": {
                                                      "type": "CallExpression",
                                                      "start": 4224,
                                                      "end": 4717,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 123,
                                                          "column": 36
                                                        }
                                                      },
                                                      "callee": {
                                                        "type": "MemberExpression",
                                                        "start": 4224,
                                                        "end": 4702,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 123,
                                                            "column": 21
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "ArrayExpression",
                                                          "start": 4224,
                                                          "end": 4698,
                                                          "loc": {
                                                            "start": {
                                                              "line": 113,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 123,
                                                              "column": 17
                                                            }
                                                          },
                                                          "elements": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4246,
                                                              "end": 4271,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 114,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 114,
                                                                  "column": 45
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4246,
                                                                "end": 4261,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 114,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 114,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4246,
                                                                  "end": 4256,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 114,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 114,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4257,
                                                                  "end": 4261,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 114,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 114,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4262,
                                                                "end": 4271,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 114,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 114,
                                                                    "column": 45
                                                                  }
                                                                },
                                                                "name": "INCIDENCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4293,
                                                              "end": 4317,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 115,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 115,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4293,
                                                                "end": 4308,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 115,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 115,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4293,
                                                                  "end": 4303,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 115,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 115,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4304,
                                                                  "end": 4308,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 115,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 115,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4309,
                                                                "end": 4317,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 115,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 115,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "DISTANCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4339,
                                                              "end": 4360,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 116,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 116,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4339,
                                                                "end": 4354,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 116,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 116,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4339,
                                                                  "end": 4349,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 116,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 116,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4350,
                                                                  "end": 4354,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 116,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 116,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4355,
                                                                "end": 4360,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 116,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 116,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "ANGLE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4382,
                                                              "end": 4406,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 117,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 117,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4382,
                                                                "end": 4397,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 117,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 117,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4382,
                                                                  "end": 4392,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 117,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 117,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4393,
                                                                  "end": 4397,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 117,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 117,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4398,
                                                                "end": 4406,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 117,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 117,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "TANGENCY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4428,
                                                              "end": 4460,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 118,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 118,
                                                                  "column": 52
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4428,
                                                                "end": 4443,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 118,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 118,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4428,
                                                                  "end": 4438,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 118,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 118,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4439,
                                                                  "end": 4443,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 118,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 118,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4444,
                                                                "end": 4460,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 118,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 118,
                                                                    "column": 52
                                                                  }
                                                                },
                                                                "name": "PERPENDICULARITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4482,
                                                              "end": 4509,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 119,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 119,
                                                                  "column": 47
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4482,
                                                                "end": 4497,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 119,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 119,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4482,
                                                                  "end": 4492,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 119,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 119,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4493,
                                                                  "end": 4497,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 119,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 119,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4498,
                                                                "end": 4509,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 119,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 119,
                                                                    "column": 47
                                                                  }
                                                                },
                                                                "name": "PARALLELITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4531,
                                                              "end": 4557,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 120,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 120,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4531,
                                                                "end": 4546,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 120,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 120,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4531,
                                                                  "end": 4541,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 120,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 120,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4542,
                                                                  "end": 4546,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 120,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 120,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4547,
                                                                "end": 4557,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 120,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 120,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "CONCENTRIC"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4579,
                                                              "end": 4603,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 121,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 121,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4579,
                                                                "end": 4594,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 121,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 121,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4579,
                                                                  "end": 4589,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 121,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 121,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4590,
                                                                  "end": 4594,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 121,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 121,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4595,
                                                                "end": 4603,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 121,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 121,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "COLINEAR"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4640,
                                                              "end": 4668,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 122,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 122,
                                                                  "column": 48
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4640,
                                                                "end": 4655,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 122,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 122,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4640,
                                                                  "end": 4650,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 122,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 122,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint",
                                                                  "leadingComments": null
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4651,
                                                                  "end": 4655,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 122,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 122,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false,
                                                                "leadingComments": null
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4656,
                                                                "end": 4668,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 122,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 122,
                                                                    "column": 48
                                                                  }
                                                                },
                                                                "name": "EQUAL_RADIUS",
                                                                "leadingComments": null,
                                                                "trailingComments": null
                                                              },
                                                              "computed": false,
                                                              "leadingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 4609,
                                                                  "end": 4619,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 121,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 121,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    4609,
                                                                    4619
                                                                  ]
                                                                }
                                                              ],
                                                              "trailingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 4670,
                                                                  "end": 4680,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 122,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 122,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    4670,
                                                                    4680
                                                                  ]
                                                                }
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4699,
                                                          "end": 4702,
                                                          "loc": {
                                                            "start": {
                                                              "line": 123,
                                                              "column": 18
                                                            },
                                                            "end": {
                                                              "line": 123,
                                                              "column": 21
                                                            }
                                                          },
                                                          "name": "map",
                                                          "leadingComments": [
                                                            {
                                                              "type": "CommentLine",
                                                              "value": "not sure",
                                                              "start": 4670,
                                                              "end": 4680,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 122,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 122,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "range": [
                                                                4670,
                                                                4680
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "computed": false
                                                      },
                                                      "arguments": [
                                                        {
                                                          "type": "ArrowFunctionExpression",
                                                          "start": 4703,
                                                          "end": 4716,
                                                          "loc": {
                                                            "start": {
                                                              "line": 123,
                                                              "column": 22
                                                            },
                                                            "end": {
                                                              "line": 123,
                                                              "column": 35
                                                            }
                                                          },
                                                          "id": null,
                                                          "generator": false,
                                                          "expression": true,
                                                          "async": false,
                                                          "params": [
                                                            {
                                                              "type": "Identifier",
                                                              "start": 4703,
                                                              "end": 4706,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 123,
                                                                  "column": 22
                                                                },
                                                                "end": {
                                                                  "line": 123,
                                                                  "column": 25
                                                                }
                                                              },
                                                              "name": "obj"
                                                            }
                                                          ],
                                                          "body": {
                                                            "type": "MemberExpression",
                                                            "start": 4710,
                                                            "end": 4716,
                                                            "loc": {
                                                              "start": {
                                                                "line": 123,
                                                                "column": 29
                                                              },
                                                              "end": {
                                                                "line": 123,
                                                                "column": 35
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 4710,
                                                              "end": 4713,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 123,
                                                                  "column": 29
                                                                },
                                                                "end": {
                                                                  "line": 123,
                                                                  "column": 32
                                                                }
                                                              },
                                                              "name": "obj"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 4714,
                                                              "end": 4715,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 123,
                                                                  "column": 33
                                                                },
                                                                "end": {
                                                                  "line": 123,
                                                                  "column": 34
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4735,
                                                "end": 4863,
                                                "loc": {
                                                  "start": {
                                                    "line": 124,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 125,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 4739,
                                                  "end": 4829,
                                                  "loc": {
                                                    "start": {
                                                      "line": 124,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 124,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 4739,
                                                    "end": 4805,
                                                    "loc": {
                                                      "start": {
                                                        "line": 124,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 124,
                                                        "column": 86
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "BinaryExpression",
                                                      "start": 4739,
                                                      "end": 4781,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 124,
                                                          "column": 62
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "CallExpression",
                                                        "start": 4739,
                                                        "end": 4774,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 55
                                                          }
                                                        },
                                                        "callee": {
                                                          "type": "MemberExpression",
                                                          "start": 4739,
                                                          "end": 4764,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 45
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 4739,
                                                            "end": 4756,
                                                            "loc": {
                                                              "start": {
                                                                "line": 124,
                                                                "column": 20
                                                              },
                                                              "end": {
                                                                "line": 124,
                                                                "column": 37
                                                              }
                                                            },
                                                            "name": "binaryCommutative"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 4757,
                                                            "end": 4764,
                                                            "loc": {
                                                              "start": {
                                                                "line": 124,
                                                                "column": 38
                                                              },
                                                              "end": {
                                                                "line": 124,
                                                                "column": 45
                                                              }
                                                            },
                                                            "name": "indexOf"
                                                          },
                                                          "computed": false
                                                        },
                                                        "arguments": [
                                                          {
                                                            "type": "MemberExpression",
                                                            "start": 4765,
                                                            "end": 4773,
                                                            "loc": {
                                                              "start": {
                                                                "line": 124,
                                                                "column": 46
                                                              },
                                                              "end": {
                                                                "line": 124,
                                                                "column": 54
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 4765,
                                                              "end": 4770,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 124,
                                                                  "column": 46
                                                                },
                                                                "end": {
                                                                  "line": 124,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "types"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 4771,
                                                              "end": 4772,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 124,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 124,
                                                                  "column": 53
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        ]
                                                      },
                                                      "operator": "!==",
                                                      "right": {
                                                        "type": "UnaryExpression",
                                                        "start": 4779,
                                                        "end": 4781,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 60
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 62
                                                          }
                                                        },
                                                        "operator": "-",
                                                        "prefix": true,
                                                        "argument": {
                                                          "type": "Literal",
                                                          "start": 4780,
                                                          "end": 4781,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 61
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 62
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        }
                                                      }
                                                    },
                                                    "operator": "&&",
                                                    "right": {
                                                      "type": "BinaryExpression",
                                                      "start": 4785,
                                                      "end": 4805,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 66
                                                        },
                                                        "end": {
                                                          "line": 124,
                                                          "column": 86
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 4785,
                                                        "end": 4792,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 66
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 73
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4785,
                                                          "end": 4789,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 66
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 70
                                                            }
                                                          },
                                                          "name": "args"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 4790,
                                                          "end": 4791,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 72
                                                            }
                                                          },
                                                          "value": 0,
                                                          "rawValue": 0,
                                                          "raw": "0"
                                                        },
                                                        "computed": true
                                                      },
                                                      "operator": "===",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 4797,
                                                        "end": 4805,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 78
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 86
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4797,
                                                          "end": 4802,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 78
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 83
                                                            }
                                                          },
                                                          "name": "args2"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 4803,
                                                          "end": 4804,
                                                          "loc": {
                                                            "start": {
                                                              "line": 124,
                                                              "column": 84
                                                            },
                                                            "end": {
                                                              "line": 124,
                                                              "column": 85
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        },
                                                        "computed": true
                                                      }
                                                    }
                                                  },
                                                  "operator": "&&",
                                                  "right": {
                                                    "type": "BinaryExpression",
                                                    "start": 4809,
                                                    "end": 4829,
                                                    "loc": {
                                                      "start": {
                                                        "line": 124,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 124,
                                                        "column": 110
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "MemberExpression",
                                                      "start": 4809,
                                                      "end": 4816,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 124,
                                                          "column": 97
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4809,
                                                        "end": 4813,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 90
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 94
                                                          }
                                                        },
                                                        "name": "args"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4814,
                                                        "end": 4815,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 95
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 96
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    },
                                                    "operator": "===",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 4821,
                                                      "end": 4829,
                                                      "loc": {
                                                        "start": {
                                                          "line": 124,
                                                          "column": 102
                                                        },
                                                        "end": {
                                                          "line": 124,
                                                          "column": 110
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4821,
                                                        "end": 4826,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 102
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 107
                                                          }
                                                        },
                                                        "name": "args2"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4827,
                                                        "end": 4828,
                                                        "loc": {
                                                          "start": {
                                                            "line": 124,
                                                            "column": 108
                                                          },
                                                          "end": {
                                                            "line": 124,
                                                            "column": 109
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4851,
                                                  "end": 4863,
                                                  "loc": {
                                                    "start": {
                                                      "line": 125,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 125,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4858,
                                                    "end": 4862,
                                                    "loc": {
                                                      "start": {
                                                        "line": 125,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 125,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "ReturnStatement",
                                                "start": 4881,
                                                "end": 4894,
                                                "loc": {
                                                  "start": {
                                                    "line": 127,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 127,
                                                    "column": 29
                                                  }
                                                },
                                                "argument": {
                                                  "type": "Literal",
                                                  "start": 4888,
                                                  "end": 4893,
                                                  "loc": {
                                                    "start": {
                                                      "line": 127,
                                                      "column": 23
                                                    },
                                                    "end": {
                                                      "line": 127,
                                                      "column": 28
                                                    }
                                                  },
                                                  "value": false,
                                                  "rawValue": false,
                                                  "raw": "false"
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "leadingComments": null
                                },
                                "leadingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3575,
                                    "end": 3608,
                                    "loc": {
                                      "start": {
                                        "line": 100,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 100,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3575,
                                      3608
                                    ]
                                  }
                                ]
                              }
                            ],
                            "trailingComments": null
                          },
                          "trailingComments": null
                        },
                        "trailingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "if the new constraint is not excessive, then take it into account",
                          "start": 2314,
                          "end": 2381,
                          "loc": {
                            "start": {
                              "line": 74,
                              "column": 8
                            },
                            "end": {
                              "line": 74,
                              "column": 75
                            }
                          },
                          "range": [
                            2314,
                            2381
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 4929,
                          "end": 4952,
                          "loc": {
                            "start": {
                              "line": 130,
                              "column": 8
                            },
                            "end": {
                              "line": 130,
                              "column": 31
                            }
                          },
                          "range": [
                            4929,
                            4952
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 4961,
                      "end": 5031,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 8
                        },
                        "end": {
                          "line": 132,
                          "column": 61
                        }
                      },
                      "test": {
                        "type": "Identifier",
                        "start": 4965,
                        "end": 4968,
                        "loc": {
                          "start": {
                            "line": 131,
                            "column": 12
                          },
                          "end": {
                            "line": 131,
                            "column": 15
                          }
                        },
                        "name": "add",
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 4982,
                        "end": 5031,
                        "loc": {
                          "start": {
                            "line": 132,
                            "column": 12
                          },
                          "end": {
                            "line": 132,
                            "column": 61
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 4982,
                          "end": 5030,
                          "loc": {
                            "start": {
                              "line": 132,
                              "column": 12
                            },
                            "end": {
                              "line": 132,
                              "column": 60
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4982,
                            "end": 5003,
                            "loc": {
                              "start": {
                                "line": 132,
                                "column": 12
                              },
                              "end": {
                                "line": 132,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 4982,
                              "end": 4998,
                              "loc": {
                                "start": {
                                  "line": 132,
                                  "column": 12
                                },
                                "end": {
                                  "line": 132,
                                  "column": 28
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 4982,
                                "end": 4986,
                                "loc": {
                                  "start": {
                                    "line": 132,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 132,
                                    "column": 16
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 4987,
                                "end": 4998,
                                "loc": {
                                  "start": {
                                    "line": 132,
                                    "column": 17
                                  },
                                  "end": {
                                    "line": 132,
                                    "column": 28
                                  }
                                },
                                "name": "constraints"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4999,
                              "end": 5003,
                              "loc": {
                                "start": {
                                  "line": 132,
                                  "column": 29
                                },
                                "end": {
                                  "line": 132,
                                  "column": 33
                                }
                              },
                              "name": "push"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "ArrayExpression",
                              "start": 5004,
                              "end": 5029,
                              "loc": {
                                "start": {
                                  "line": 132,
                                  "column": 34
                                },
                                "end": {
                                  "line": 132,
                                  "column": 59
                                }
                              },
                              "elements": [
                                {
                                  "type": "Identifier",
                                  "start": 5005,
                                  "end": 5010,
                                  "loc": {
                                    "start": {
                                      "line": 132,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 132,
                                      "column": 40
                                    }
                                  },
                                  "name": "types"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5012,
                                  "end": 5016,
                                  "loc": {
                                    "start": {
                                      "line": 132,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 132,
                                      "column": 46
                                    }
                                  },
                                  "name": "args"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5018,
                                  "end": 5028,
                                  "loc": {
                                    "start": {
                                      "line": 132,
                                      "column": 48
                                    },
                                    "end": {
                                      "line": 132,
                                      "column": 58
                                    }
                                  },
                                  "name": "attributes"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      "alternate": null,
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 4929,
                          "end": 4952,
                          "loc": {
                            "start": {
                              "line": 130,
                              "column": 8
                            },
                            "end": {
                              "line": 130,
                              "column": 31
                            }
                          },
                          "range": [
                            4929,
                            4952
                          ]
                        }
                      ]
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "add new constraint to internal buffer (if it is not excessive)",
                  "start": 2181,
                  "end": 2245,
                  "loc": {
                    "start": {
                      "line": 71,
                      "column": 4
                    },
                    "end": {
                      "line": 71,
                      "column": 68
                    }
                  },
                  "range": [
                    2181,
                    2245
                  ]
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5043,
                  "end": 5110,
                  "loc": {
                    "start": {
                      "line": 135,
                      "column": 4
                    },
                    "end": {
                      "line": 135,
                      "column": 71
                    }
                  },
                  "range": [
                    5043,
                    5110
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 5115,
              "end": 5377,
              "loc": {
                "start": {
                  "line": 136,
                  "column": 4
                },
                "end": {
                  "line": 144,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5115,
                "end": 5121,
                "loc": {
                  "start": {
                    "line": 136,
                    "column": 4
                  },
                  "end": {
                    "line": 136,
                    "column": 10
                  }
                },
                "name": "commit",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 5121,
                "end": 5377,
                "loc": {
                  "start": {
                    "line": 136,
                    "column": 10
                  },
                  "end": {
                    "line": 144,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 5124,
                  "end": 5377,
                  "loc": {
                    "start": {
                      "line": 136,
                      "column": 13
                    },
                    "end": {
                      "line": 144,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 5134,
                      "end": 5155,
                      "loc": {
                        "start": {
                          "line": 137,
                          "column": 8
                        },
                        "end": {
                          "line": 137,
                          "column": 29
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 5138,
                          "end": 5154,
                          "loc": {
                            "start": {
                              "line": 137,
                              "column": 12
                            },
                            "end": {
                              "line": 137,
                              "column": 28
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 5138,
                            "end": 5149,
                            "loc": {
                              "start": {
                                "line": 137,
                                "column": 12
                              },
                              "end": {
                                "line": 137,
                                "column": 23
                              }
                            },
                            "name": "constraints"
                          },
                          "init": {
                            "type": "ArrayExpression",
                            "start": 5152,
                            "end": 5154,
                            "loc": {
                              "start": {
                                "line": 137,
                                "column": 26
                              },
                              "end": {
                                "line": 137,
                                "column": 28
                              }
                            },
                            "elements": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5164,
                      "end": 5312,
                      "loc": {
                        "start": {
                          "line": 138,
                          "column": 8
                        },
                        "end": {
                          "line": 141,
                          "column": 11
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 5164,
                        "end": 5311,
                        "loc": {
                          "start": {
                            "line": 138,
                            "column": 8
                          },
                          "end": {
                            "line": 141,
                            "column": 10
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 5164,
                          "end": 5188,
                          "loc": {
                            "start": {
                              "line": 138,
                              "column": 8
                            },
                            "end": {
                              "line": 138,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 5164,
                            "end": 5180,
                            "loc": {
                              "start": {
                                "line": 138,
                                "column": 8
                              },
                              "end": {
                                "line": 138,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 5164,
                              "end": 5168,
                              "loc": {
                                "start": {
                                  "line": 138,
                                  "column": 8
                                },
                                "end": {
                                  "line": 138,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5169,
                              "end": 5180,
                              "loc": {
                                "start": {
                                  "line": 138,
                                  "column": 13
                                },
                                "end": {
                                  "line": 138,
                                  "column": 24
                                }
                              },
                              "name": "constraints"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5181,
                            "end": 5188,
                            "loc": {
                              "start": {
                                "line": 138,
                                "column": 25
                              },
                              "end": {
                                "line": 138,
                                "column": 32
                              }
                            },
                            "name": "forEach"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ArrowFunctionExpression",
                            "start": 5189,
                            "end": 5310,
                            "loc": {
                              "start": {
                                "line": 138,
                                "column": 33
                              },
                              "end": {
                                "line": 141,
                                "column": 9
                              }
                            },
                            "id": null,
                            "generator": false,
                            "expression": false,
                            "async": false,
                            "params": [
                              {
                                "type": "Identifier",
                                "start": 5189,
                                "end": 5192,
                                "loc": {
                                  "start": {
                                    "line": 138,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 138,
                                    "column": 36
                                  }
                                },
                                "name": "obj"
                              }
                            ],
                            "body": {
                              "type": "BlockStatement",
                              "start": 5196,
                              "end": 5310,
                              "loc": {
                                "start": {
                                  "line": 138,
                                  "column": 40
                                },
                                "end": {
                                  "line": 141,
                                  "column": 9
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 5210,
                                  "end": 5262,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 64
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 5214,
                                      "end": 5261,
                                      "loc": {
                                        "start": {
                                          "line": 139,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 139,
                                          "column": 63
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 5214,
                                        "end": 5220,
                                        "loc": {
                                          "start": {
                                            "line": 139,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 139,
                                            "column": 22
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "init": {
                                        "type": "NewExpression",
                                        "start": 5223,
                                        "end": 5261,
                                        "loc": {
                                          "start": {
                                            "line": 139,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 139,
                                            "column": 63
                                          }
                                        },
                                        "callee": {
                                          "type": "Identifier",
                                          "start": 5227,
                                          "end": 5237,
                                          "loc": {
                                            "start": {
                                              "line": 139,
                                              "column": 29
                                            },
                                            "end": {
                                              "line": 139,
                                              "column": 39
                                            }
                                          },
                                          "name": "Constraint"
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 5238,
                                            "end": 5244,
                                            "loc": {
                                              "start": {
                                                "line": 139,
                                                "column": 40
                                              },
                                              "end": {
                                                "line": 139,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5238,
                                              "end": 5241,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 43
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5242,
                                              "end": 5243,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5246,
                                            "end": 5252,
                                            "loc": {
                                              "start": {
                                                "line": 139,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 139,
                                                "column": 54
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5246,
                                              "end": 5249,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 51
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5250,
                                              "end": 5251,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 52
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 53
                                                }
                                              },
                                              "value": 1,
                                              "rawValue": 1,
                                              "raw": "1"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5254,
                                            "end": 5260,
                                            "loc": {
                                              "start": {
                                                "line": 139,
                                                "column": 56
                                              },
                                              "end": {
                                                "line": 139,
                                                "column": 62
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5254,
                                              "end": 5257,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 56
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 59
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5258,
                                              "end": 5259,
                                              "loc": {
                                                "start": {
                                                  "line": 139,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 139,
                                                  "column": 61
                                                }
                                              },
                                              "value": 2,
                                              "rawValue": 2,
                                              "raw": "2"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ],
                                  "kind": "var"
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5275,
                                  "end": 5300,
                                  "loc": {
                                    "start": {
                                      "line": 140,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 140,
                                      "column": 37
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 5275,
                                    "end": 5299,
                                    "loc": {
                                      "start": {
                                        "line": 140,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 140,
                                        "column": 36
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 5275,
                                      "end": 5291,
                                      "loc": {
                                        "start": {
                                          "line": 140,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 140,
                                          "column": 28
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 5275,
                                        "end": 5286,
                                        "loc": {
                                          "start": {
                                            "line": 140,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 140,
                                            "column": 23
                                          }
                                        },
                                        "name": "constraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5287,
                                        "end": 5291,
                                        "loc": {
                                          "start": {
                                            "line": 140,
                                            "column": 24
                                          },
                                          "end": {
                                            "line": 140,
                                            "column": 28
                                          }
                                        },
                                        "name": "push"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Identifier",
                                        "start": 5292,
                                        "end": 5298,
                                        "loc": {
                                          "start": {
                                            "line": 140,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 140,
                                            "column": 35
                                          }
                                        },
                                        "name": "constr"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5321,
                      "end": 5343,
                      "loc": {
                        "start": {
                          "line": 142,
                          "column": 8
                        },
                        "end": {
                          "line": 142,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5321,
                        "end": 5342,
                        "loc": {
                          "start": {
                            "line": 142,
                            "column": 8
                          },
                          "end": {
                            "line": 142,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5321,
                          "end": 5337,
                          "loc": {
                            "start": {
                              "line": 142,
                              "column": 8
                            },
                            "end": {
                              "line": 142,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5321,
                            "end": 5325,
                            "loc": {
                              "start": {
                                "line": 142,
                                "column": 8
                              },
                              "end": {
                                "line": 142,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5326,
                            "end": 5337,
                            "loc": {
                              "start": {
                                "line": 142,
                                "column": 13
                              },
                              "end": {
                                "line": 142,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 5340,
                          "end": 5342,
                          "loc": {
                            "start": {
                              "line": 142,
                              "column": 27
                            },
                            "end": {
                              "line": 142,
                              "column": 29
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 5352,
                      "end": 5371,
                      "loc": {
                        "start": {
                          "line": 143,
                          "column": 8
                        },
                        "end": {
                          "line": 143,
                          "column": 27
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 5359,
                        "end": 5370,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 15
                          },
                          "end": {
                            "line": 143,
                            "column": 26
                          }
                        },
                        "name": "constraints"
                      }
                    }
                  ]
                }
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5043,
                  "end": 5110,
                  "loc": {
                    "start": {
                      "line": 135,
                      "column": 4
                    },
                    "end": {
                      "line": 135,
                      "column": 71
                    }
                  },
                  "range": [
                    5043,
                    5110
                  ]
                }
              ]
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Constraints adder ========================",
            "start": 914,
            "end": 981,
            "loc": {
              "start": {
                "line": 39,
                "column": 0
              },
              "end": {
                "line": 39,
                "column": 67
              }
            },
            "range": [
              914,
              981
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5381,
            "end": 5460,
            "loc": {
              "start": {
                "line": 147,
                "column": 0
              },
              "end": {
                "line": 147,
                "column": 79
              }
            },
            "range": [
              5381,
              5460
            ]
          },
          {
            "type": "Block",
            "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
            "start": 5461,
            "end": 5553,
            "loc": {
              "start": {
                "line": 148,
                "column": 0
              },
              "end": {
                "line": 150,
                "column": 3
              }
            },
            "range": [
              5461,
              5553
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 914,
          "end": 981,
          "loc": {
            "start": {
              "line": 39,
              "column": 0
            },
            "end": {
              "line": 39,
              "column": 67
            }
          },
          "range": [
            914,
            981
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5381,
          "end": 5460,
          "loc": {
            "start": {
              "line": 147,
              "column": 0
            },
            "end": {
              "line": 147,
              "column": 79
            }
          },
          "range": [
            5381,
            5460
          ]
        },
        {
          "type": "Block",
          "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
          "start": 5461,
          "end": 5553,
          "loc": {
            "start": {
              "line": 148,
              "column": 0
            },
            "end": {
              "line": 150,
              "column": 3
            }
          },
          "range": [
            5461,
            5553
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 5554,
      "end": 8786,
      "loc": {
        "start": {
          "line": 151,
          "column": 0
        },
        "end": {
          "line": 219,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 5561,
        "end": 8786,
        "loc": {
          "start": {
            "line": 151,
            "column": 7
          },
          "end": {
            "line": 219,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 5567,
          "end": 5586,
          "loc": {
            "start": {
              "line": 151,
              "column": 13
            },
            "end": {
              "line": 151,
              "column": 32
            }
          },
          "name": "ConstraintGenerator",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 5587,
          "end": 8786,
          "loc": {
            "start": {
              "line": 151,
              "column": 33
            },
            "end": {
              "line": 219,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 5593,
              "end": 5993,
              "loc": {
                "start": {
                  "line": 152,
                  "column": 4
                },
                "end": {
                  "line": 166,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5593,
                "end": 5604,
                "loc": {
                  "start": {
                    "line": 152,
                    "column": 4
                  },
                  "end": {
                    "line": 152,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 5604,
                "end": 5993,
                "loc": {
                  "start": {
                    "line": 152,
                    "column": 15
                  },
                  "end": {
                    "line": 166,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 5605,
                    "end": 5611,
                    "loc": {
                      "start": {
                        "line": 152,
                        "column": 16
                      },
                      "end": {
                        "line": 152,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 5613,
                  "end": 5993,
                  "loc": {
                    "start": {
                      "line": 152,
                      "column": 24
                    },
                    "end": {
                      "line": 166,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 5623,
                      "end": 5644,
                      "loc": {
                        "start": {
                          "line": 153,
                          "column": 8
                        },
                        "end": {
                          "line": 153,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5623,
                        "end": 5643,
                        "loc": {
                          "start": {
                            "line": 153,
                            "column": 8
                          },
                          "end": {
                            "line": 153,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5623,
                          "end": 5634,
                          "loc": {
                            "start": {
                              "line": 153,
                              "column": 8
                            },
                            "end": {
                              "line": 153,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5623,
                            "end": 5627,
                            "loc": {
                              "start": {
                                "line": 153,
                                "column": 8
                              },
                              "end": {
                                "line": 153,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5628,
                            "end": 5634,
                            "loc": {
                              "start": {
                                "line": 153,
                                "column": 13
                              },
                              "end": {
                                "line": 153,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 5637,
                          "end": 5643,
                          "loc": {
                            "start": {
                              "line": 153,
                              "column": 22
                            },
                            "end": {
                              "line": 153,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 5654,
                          "end": 5683,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 8
                            },
                            "end": {
                              "line": 155,
                              "column": 37
                            }
                          },
                          "range": [
                            5654,
                            5683
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5692,
                      "end": 5852,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 8
                        },
                        "end": {
                          "line": 161,
                          "column": 10
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5692,
                        "end": 5851,
                        "loc": {
                          "start": {
                            "line": 156,
                            "column": 8
                          },
                          "end": {
                            "line": 161,
                            "column": 9
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5692,
                          "end": 5705,
                          "loc": {
                            "start": {
                              "line": 156,
                              "column": 8
                            },
                            "end": {
                              "line": 156,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5692,
                            "end": 5696,
                            "loc": {
                              "start": {
                                "line": 156,
                                "column": 8
                              },
                              "end": {
                                "line": 156,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5697,
                            "end": 5705,
                            "loc": {
                              "start": {
                                "line": 156,
                                "column": 13
                              },
                              "end": {
                                "line": 156,
                                "column": 21
                              }
                            },
                            "name": "generate"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 5708,
                          "end": 5851,
                          "loc": {
                            "start": {
                              "line": 156,
                              "column": 24
                            },
                            "end": {
                              "line": 161,
                              "column": 9
                            }
                          },
                          "properties": [
                            {
                              "type": "Property",
                              "start": 5722,
                              "end": 5742,
                              "loc": {
                                "start": {
                                  "line": 157,
                                  "column": 12
                                },
                                "end": {
                                  "line": 157,
                                  "column": 32
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5722,
                                "end": 5735,
                                "loc": {
                                  "start": {
                                    "line": 157,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 157,
                                    "column": 25
                                  }
                                },
                                "name": "horizontality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5738,
                                "end": 5742,
                                "loc": {
                                  "start": {
                                    "line": 157,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 157,
                                    "column": 32
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5756,
                              "end": 5774,
                              "loc": {
                                "start": {
                                  "line": 158,
                                  "column": 12
                                },
                                "end": {
                                  "line": 158,
                                  "column": 30
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5756,
                                "end": 5767,
                                "loc": {
                                  "start": {
                                    "line": 158,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 158,
                                    "column": 23
                                  }
                                },
                                "name": "verticality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5770,
                                "end": 5774,
                                "loc": {
                                  "start": {
                                    "line": 158,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 158,
                                    "column": 30
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5788,
                              "end": 5811,
                              "loc": {
                                "start": {
                                  "line": 159,
                                  "column": 12
                                },
                                "end": {
                                  "line": 159,
                                  "column": 35
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5788,
                                "end": 5804,
                                "loc": {
                                  "start": {
                                    "line": 159,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 159,
                                    "column": 28
                                  }
                                },
                                "name": "pointCoincidence"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5807,
                                "end": 5811,
                                "loc": {
                                  "start": {
                                    "line": 159,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 159,
                                    "column": 35
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5825,
                              "end": 5840,
                              "loc": {
                                "start": {
                                  "line": 160,
                                  "column": 12
                                },
                                "end": {
                                  "line": 160,
                                  "column": 27
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5825,
                                "end": 5833,
                                "loc": {
                                  "start": {
                                    "line": 160,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 160,
                                    "column": 20
                                  }
                                },
                                "name": "tangency"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5836,
                                "end": 5840,
                                "loc": {
                                  "start": {
                                    "line": 160,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 160,
                                    "column": 27
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 5654,
                          "end": 5683,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 8
                            },
                            "end": {
                              "line": 155,
                              "column": 37
                            }
                          },
                          "range": [
                            5654,
                            5683
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "note: it should be static, but ES6 is against it",
                          "start": 5862,
                          "end": 5912,
                          "loc": {
                            "start": {
                              "line": 163,
                              "column": 8
                            },
                            "end": {
                              "line": 163,
                              "column": 58
                            }
                          },
                          "range": [
                            5862,
                            5912
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5921,
                      "end": 5950,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 8
                        },
                        "end": {
                          "line": 164,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5921,
                        "end": 5949,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 8
                          },
                          "end": {
                            "line": 164,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5921,
                          "end": 5942,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 8
                            },
                            "end": {
                              "line": 164,
                              "column": 29
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5921,
                            "end": 5925,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 8
                              },
                              "end": {
                                "line": 164,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5926,
                            "end": 5942,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 13
                              },
                              "end": {
                                "line": 164,
                                "column": 29
                              }
                            },
                            "name": "angularTolerance"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Literal",
                          "start": 5945,
                          "end": 5949,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 32
                            },
                            "end": {
                              "line": 164,
                              "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": 5862,
                          "end": 5912,
                          "loc": {
                            "start": {
                              "line": 163,
                              "column": 8
                            },
                            "end": {
                              "line": 163,
                              "column": 58
                            }
                          },
                          "range": [
                            5862,
                            5912
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5959,
                      "end": 5987,
                      "loc": {
                        "start": {
                          "line": 165,
                          "column": 8
                        },
                        "end": {
                          "line": 165,
                          "column": 36
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5959,
                        "end": 5986,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 8
                          },
                          "end": {
                            "line": 165,
                            "column": 35
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5959,
                          "end": 5979,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 8
                            },
                            "end": {
                              "line": 165,
                              "column": 28
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5959,
                            "end": 5963,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 8
                              },
                              "end": {
                                "line": 165,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5964,
                            "end": 5979,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 13
                              },
                              "end": {
                                "line": 165,
                                "column": 28
                              }
                            },
                            "name": "linearTolerance"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Literal",
                          "start": 5982,
                          "end": 5986,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 31
                            },
                            "end": {
                              "line": 165,
                              "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": 6000,
                  "end": 6108,
                  "loc": {
                    "start": {
                      "line": 169,
                      "column": 4
                    },
                    "end": {
                      "line": 169,
                      "column": 112
                    }
                  },
                  "range": [
                    6000,
                    6108
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 6113,
              "end": 8784,
              "loc": {
                "start": {
                  "line": 170,
                  "column": 4
                },
                "end": {
                  "line": 218,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 6113,
                "end": 6139,
                "loc": {
                  "start": {
                    "line": 170,
                    "column": 4
                  },
                  "end": {
                    "line": 170,
                    "column": 30
                  }
                },
                "name": "generateImpliedConstraints",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 6139,
                "end": 8784,
                "loc": {
                  "start": {
                    "line": 170,
                    "column": 30
                  },
                  "end": {
                    "line": 218,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 6140,
                    "end": 6149,
                    "loc": {
                      "start": {
                        "line": 170,
                        "column": 31
                      },
                      "end": {
                        "line": 170,
                        "column": 40
                      }
                    },
                    "name": "relatedTo"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 6151,
                  "end": 8784,
                  "loc": {
                    "start": {
                      "line": 170,
                      "column": 42
                    },
                    "end": {
                      "line": 218,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 6161,
                      "end": 6207,
                      "loc": {
                        "start": {
                          "line": 171,
                          "column": 8
                        },
                        "end": {
                          "line": 171,
                          "column": 54
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6165,
                          "end": 6206,
                          "loc": {
                            "start": {
                              "line": 171,
                              "column": 12
                            },
                            "end": {
                              "line": 171,
                              "column": 53
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6165,
                            "end": 6170,
                            "loc": {
                              "start": {
                                "line": 171,
                                "column": 12
                              },
                              "end": {
                                "line": 171,
                                "column": 17
                              }
                            },
                            "name": "adder"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6173,
                            "end": 6206,
                            "loc": {
                              "start": {
                                "line": 171,
                                "column": 20
                              },
                              "end": {
                                "line": 171,
                                "column": 53
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6177,
                              "end": 6193,
                              "loc": {
                                "start": {
                                  "line": 171,
                                  "column": 24
                                },
                                "end": {
                                  "line": 171,
                                  "column": 40
                                }
                              },
                              "name": "ConstraintsAdder"
                            },
                            "arguments": [
                              {
                                "type": "MemberExpression",
                                "start": 6194,
                                "end": 6205,
                                "loc": {
                                  "start": {
                                    "line": 171,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 171,
                                    "column": 52
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6194,
                                  "end": 6198,
                                  "loc": {
                                    "start": {
                                      "line": 171,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 171,
                                      "column": 45
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6199,
                                  "end": 6205,
                                  "loc": {
                                    "start": {
                                      "line": 171,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 171,
                                      "column": 52
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6217,
                      "end": 6268,
                      "loc": {
                        "start": {
                          "line": 173,
                          "column": 8
                        },
                        "end": {
                          "line": 173,
                          "column": 59
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6221,
                          "end": 6267,
                          "loc": {
                            "start": {
                              "line": 173,
                              "column": 12
                            },
                            "end": {
                              "line": 173,
                              "column": 58
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6221,
                            "end": 6232,
                            "loc": {
                              "start": {
                                "line": 173,
                                "column": 12
                              },
                              "end": {
                                "line": 173,
                                "column": 23
                              }
                            },
                            "name": "mainObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6235,
                            "end": 6267,
                            "loc": {
                              "start": {
                                "line": 173,
                                "column": 26
                              },
                              "end": {
                                "line": 173,
                                "column": 58
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6235,
                              "end": 6265,
                              "loc": {
                                "start": {
                                  "line": 173,
                                  "column": 26
                                },
                                "end": {
                                  "line": 173,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 6235,
                                "end": 6246,
                                "loc": {
                                  "start": {
                                    "line": 173,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 173,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6235,
                                  "end": 6239,
                                  "loc": {
                                    "start": {
                                      "line": 173,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 173,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6240,
                                  "end": 6246,
                                  "loc": {
                                    "start": {
                                      "line": 173,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 173,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6247,
                                "end": 6265,
                                "loc": {
                                  "start": {
                                    "line": 173,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 173,
                                    "column": 56
                                  }
                                },
                                "name": "getObjectsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6277,
                      "end": 6337,
                      "loc": {
                        "start": {
                          "line": 174,
                          "column": 8
                        },
                        "end": {
                          "line": 174,
                          "column": 68
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6281,
                          "end": 6336,
                          "loc": {
                            "start": {
                              "line": 174,
                              "column": 12
                            },
                            "end": {
                              "line": 174,
                              "column": 67
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6281,
                            "end": 6291,
                            "loc": {
                              "start": {
                                "line": 174,
                                "column": 12
                              },
                              "end": {
                                "line": 174,
                                "column": 22
                              }
                            },
                            "name": "allObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6294,
                            "end": 6336,
                            "loc": {
                              "start": {
                                "line": 174,
                                "column": 25
                              },
                              "end": {
                                "line": 174,
                                "column": 67
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6294,
                              "end": 6323,
                              "loc": {
                                "start": {
                                  "line": 174,
                                  "column": 25
                                },
                                "end": {
                                  "line": 174,
                                  "column": 54
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 6294,
                                "end": 6300,
                                "loc": {
                                  "start": {
                                    "line": 174,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 174,
                                    "column": 31
                                  }
                                },
                                "name": "Sketch"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6301,
                                "end": 6323,
                                "loc": {
                                  "start": {
                                    "line": 174,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 174,
                                    "column": 54
                                  }
                                },
                                "name": "ForObjectsWithChildren"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6324,
                                "end": 6335,
                                "loc": {
                                  "start": {
                                    "line": 174,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 174,
                                    "column": 66
                                  }
                                },
                                "name": "mainObjects"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "IfStatement",
                      "start": 6346,
                      "end": 6410,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 8
                        },
                        "end": {
                          "line": 176,
                          "column": 35
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 6350,
                        "end": 6373,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 12
                          },
                          "end": {
                            "line": 175,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 6350,
                          "end": 6359,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 12
                            },
                            "end": {
                              "line": 175,
                              "column": 21
                            }
                          },
                          "name": "relatedTo"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 6364,
                          "end": 6373,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 26
                            },
                            "end": {
                              "line": 175,
                              "column": 35
                            }
                          },
                          "name": "undefined"
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 6387,
                        "end": 6410,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 12
                          },
                          "end": {
                            "line": 176,
                            "column": 35
                          }
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "start": 6387,
                          "end": 6409,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 12
                            },
                            "end": {
                              "line": 176,
                              "column": 34
                            }
                          },
                          "operator": "=",
                          "left": {
                            "type": "Identifier",
                            "start": 6387,
                            "end": 6396,
                            "loc": {
                              "start": {
                                "line": 176,
                                "column": 12
                              },
                              "end": {
                                "line": 176,
                                "column": 21
                              }
                            },
                            "name": "relatedTo"
                          },
                          "right": {
                            "type": "Identifier",
                            "start": 6399,
                            "end": 6409,
                            "loc": {
                              "start": {
                                "line": 176,
                                "column": 24
                              },
                              "end": {
                                "line": 176,
                                "column": 34
                              }
                            },
                            "name": "allObjects"
                          }
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6419,
                      "end": 6457,
                      "loc": {
                        "start": {
                          "line": 177,
                          "column": 8
                        },
                        "end": {
                          "line": 177,
                          "column": 46
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6423,
                          "end": 6456,
                          "loc": {
                            "start": {
                              "line": 177,
                              "column": 12
                            },
                            "end": {
                              "line": 177,
                              "column": 45
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6423,
                            "end": 6435,
                            "loc": {
                              "start": {
                                "line": 177,
                                "column": 12
                              },
                              "end": {
                                "line": 177,
                                "column": 24
                              }
                            },
                            "name": "relatedToSet"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6438,
                            "end": 6456,
                            "loc": {
                              "start": {
                                "line": 177,
                                "column": 27
                              },
                              "end": {
                                "line": 177,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6442,
                              "end": 6445,
                              "loc": {
                                "start": {
                                  "line": 177,
                                  "column": 31
                                },
                                "end": {
                                  "line": 177,
                                  "column": 34
                                }
                              },
                              "name": "Set"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6446,
                                "end": 6455,
                                "loc": {
                                  "start": {
                                    "line": 177,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 177,
                                    "column": 44
                                  }
                                },
                                "name": "relatedTo"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 6467,
                      "end": 8746,
                      "loc": {
                        "start": {
                          "line": 179,
                          "column": 8
                        },
                        "end": {
                          "line": 215,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 6472,
                        "end": 6483,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 13
                          },
                          "end": {
                            "line": 179,
                            "column": 24
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 6476,
                            "end": 6483,
                            "loc": {
                              "start": {
                                "line": 179,
                                "column": 17
                              },
                              "end": {
                                "line": 179,
                                "column": 24
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 6476,
                              "end": 6483,
                              "loc": {
                                "start": {
                                  "line": 179,
                                  "column": 17
                                },
                                "end": {
                                  "line": 179,
                                  "column": 24
                                }
                              },
                              "name": "baseObj"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 6487,
                        "end": 6496,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 28
                          },
                          "end": {
                            "line": 179,
                            "column": 37
                          }
                        },
                        "name": "relatedTo"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 6498,
                        "end": 8746,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 39
                          },
                          "end": {
                            "line": 215,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 6512,
                            "end": 7121,
                            "loc": {
                              "start": {
                                "line": 180,
                                "column": 12
                              },
                              "end": {
                                "line": 189,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 6516,
                              "end": 6539,
                              "loc": {
                                "start": {
                                  "line": 180,
                                  "column": 16
                                },
                                "end": {
                                  "line": 180,
                                  "column": 39
                                }
                              },
                              "left": {
                                "type": "Identifier",
                                "start": 6516,
                                "end": 6523,
                                "loc": {
                                  "start": {
                                    "line": 180,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 180,
                                    "column": 23
                                  }
                                },
                                "name": "baseObj"
                              },
                              "operator": "instanceof",
                              "right": {
                                "type": "Identifier",
                                "start": 6535,
                                "end": 6539,
                                "loc": {
                                  "start": {
                                    "line": 180,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 180,
                                    "column": 39
                                  }
                                },
                                "name": "Line"
                              }
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 6541,
                              "end": 7121,
                              "loc": {
                                "start": {
                                  "line": 180,
                                  "column": 41
                                },
                                "end": {
                                  "line": 189,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 6624,
                                  "end": 6655,
                                  "loc": {
                                    "start": {
                                      "line": 182,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 182,
                                      "column": 47
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 6628,
                                      "end": 6654,
                                      "loc": {
                                        "start": {
                                          "line": 182,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 182,
                                          "column": 46
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 6628,
                                        "end": 6631,
                                        "loc": {
                                          "start": {
                                            "line": 182,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 182,
                                            "column": 23
                                          }
                                        },
                                        "name": "vec",
                                        "leadingComments": null
                                      },
                                      "init": {
                                        "type": "CallExpression",
                                        "start": 6634,
                                        "end": 6654,
                                        "loc": {
                                          "start": {
                                            "line": 182,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 182,
                                            "column": 46
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 6634,
                                          "end": 6652,
                                          "loc": {
                                            "start": {
                                              "line": 182,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 182,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 6634,
                                            "end": 6641,
                                            "loc": {
                                              "start": {
                                                "line": 182,
                                                "column": 26
                                              },
                                              "end": {
                                                "line": 182,
                                                "column": 33
                                              }
                                            },
                                            "name": "baseObj"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 6642,
                                            "end": 6652,
                                            "loc": {
                                              "start": {
                                                "line": 182,
                                                "column": 34
                                              },
                                              "end": {
                                                "line": 182,
                                                "column": 44
                                              }
                                            },
                                            "name": "getTangent"
                                          },
                                          "computed": false
                                        },
                                        "arguments": []
                                      },
                                      "leadingComments": null
                                    }
                                  ],
                                  "kind": "var",
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": " generate implied horizontality or verticality",
                                      "start": 6559,
                                      "end": 6607,
                                      "loc": {
                                        "start": {
                                          "line": 181,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 181,
                                          "column": 64
                                        }
                                      },
                                      "range": [
                                        6559,
                                        6607
                                      ]
                                    }
                                  ],
                                  "trailingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 6656,
                                      "end": 6677,
                                      "loc": {
                                        "start": {
                                          "line": 182,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 182,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        6656,
                                        6677
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "IfStatement",
                                  "start": 6694,
                                  "end": 7107,
                                  "loc": {
                                    "start": {
                                      "line": 183,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 188,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "BinaryExpression",
                                    "start": 6698,
                                    "end": 6734,
                                    "loc": {
                                      "start": {
                                        "line": 183,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 183,
                                        "column": 56
                                      }
                                    },
                                    "left": {
                                      "type": "CallExpression",
                                      "start": 6698,
                                      "end": 6710,
                                      "loc": {
                                        "start": {
                                          "line": 183,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 183,
                                          "column": 32
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 6698,
                                        "end": 6708,
                                        "loc": {
                                          "start": {
                                            "line": 183,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 183,
                                            "column": 30
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 6698,
                                          "end": 6701,
                                          "loc": {
                                            "start": {
                                              "line": 183,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 183,
                                              "column": 23
                                            }
                                          },
                                          "name": "vec",
                                          "leadingComments": null
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 6702,
                                          "end": 6708,
                                          "loc": {
                                            "start": {
                                              "line": 183,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 183,
                                              "column": 30
                                            }
                                          },
                                          "name": "length"
                                        },
                                        "computed": false,
                                        "leadingComments": null
                                      },
                                      "arguments": [],
                                      "leadingComments": null
                                    },
                                    "operator": ">",
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 6713,
                                      "end": 6734,
                                      "loc": {
                                        "start": {
                                          "line": 183,
                                          "column": 35
                                        },
                                        "end": {
                                          "line": 183,
                                          "column": 56
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 6713,
                                        "end": 6717,
                                        "loc": {
                                          "start": {
                                            "line": 183,
                                            "column": 35
                                          },
                                          "end": {
                                            "line": 183,
                                            "column": 39
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 6718,
                                        "end": 6734,
                                        "loc": {
                                          "start": {
                                            "line": 183,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 183,
                                            "column": 56
                                          }
                                        },
                                        "name": "angularTolerance"
                                      },
                                      "computed": false
                                    },
                                    "leadingComments": null
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 6736,
                                    "end": 7107,
                                    "loc": {
                                      "start": {
                                        "line": 183,
                                        "column": 58
                                      },
                                      "end": {
                                        "line": 188,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "IfStatement",
                                        "start": 6758,
                                        "end": 6914,
                                        "loc": {
                                          "start": {
                                            "line": 184,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 185,
                                            "column": 110
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 6762,
                                          "end": 6802,
                                          "loc": {
                                            "start": {
                                              "line": 184,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 184,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 6762,
                                            "end": 6777,
                                            "loc": {
                                              "start": {
                                                "line": 184,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 184,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 6762,
                                              "end": 6770,
                                              "loc": {
                                                "start": {
                                                  "line": 184,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 184,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 6762,
                                                "end": 6766,
                                                "loc": {
                                                  "start": {
                                                    "line": 184,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 184,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 6767,
                                                "end": 6770,
                                                "loc": {
                                                  "start": {
                                                    "line": 184,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 184,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 6771,
                                                "end": 6776,
                                                "loc": {
                                                  "start": {
                                                    "line": 184,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 184,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 6771,
                                                  "end": 6774,
                                                  "loc": {
                                                    "start": {
                                                      "line": 184,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 184,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 6775,
                                                  "end": 6776,
                                                  "loc": {
                                                    "start": {
                                                      "line": 184,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 184,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "y"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 6781,
                                            "end": 6802,
                                            "loc": {
                                              "start": {
                                                "line": 184,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 184,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 6781,
                                              "end": 6785,
                                              "loc": {
                                                "start": {
                                                  "line": 184,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 184,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 6786,
                                              "end": 6802,
                                              "loc": {
                                                "start": {
                                                  "line": 184,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 184,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 6828,
                                          "end": 6914,
                                          "loc": {
                                            "start": {
                                              "line": 185,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 185,
                                              "column": 110
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 6828,
                                            "end": 6913,
                                            "loc": {
                                              "start": {
                                                "line": 185,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 185,
                                                "column": 109
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 6828,
                                              "end": 6837,
                                              "loc": {
                                                "start": {
                                                  "line": 185,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 185,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 6828,
                                                "end": 6833,
                                                "loc": {
                                                  "start": {
                                                    "line": 185,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 185,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 6834,
                                                "end": 6837,
                                                "loc": {
                                                  "start": {
                                                    "line": 185,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 185,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 6838,
                                                "end": 6867,
                                                "loc": {
                                                  "start": {
                                                    "line": 185,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 185,
                                                    "column": 63
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 6838,
                                                  "end": 6853,
                                                  "loc": {
                                                    "start": {
                                                      "line": 185,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 185,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 6838,
                                                    "end": 6848,
                                                    "loc": {
                                                      "start": {
                                                        "line": 185,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 185,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 6849,
                                                    "end": 6853,
                                                    "loc": {
                                                      "start": {
                                                        "line": 185,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 185,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 6854,
                                                  "end": 6867,
                                                  "loc": {
                                                    "start": {
                                                      "line": 185,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 185,
                                                      "column": 63
                                                    }
                                                  },
                                                  "name": "HORIZONTALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 6869,
                                                "end": 6878,
                                                "loc": {
                                                  "start": {
                                                    "line": 185,
                                                    "column": 65
                                                  },
                                                  "end": {
                                                    "line": 185,
                                                    "column": 74
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 6870,
                                                    "end": 6877,
                                                    "loc": {
                                                      "start": {
                                                        "line": 185,
                                                        "column": 66
                                                      },
                                                      "end": {
                                                        "line": 185,
                                                        "column": 73
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 6880,
                                                "end": 6912,
                                                "loc": {
                                                  "start": {
                                                    "line": 185,
                                                    "column": 76
                                                  },
                                                  "end": {
                                                    "line": 185,
                                                    "column": 108
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 6881,
                                                    "end": 6892,
                                                    "loc": {
                                                      "start": {
                                                        "line": 185,
                                                        "column": 77
                                                      },
                                                      "end": {
                                                        "line": 185,
                                                        "column": 88
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 6881,
                                                      "end": 6886,
                                                      "loc": {
                                                        "start": {
                                                          "line": 185,
                                                          "column": 77
                                                        },
                                                        "end": {
                                                          "line": 185,
                                                          "column": 82
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 6888,
                                                      "end": 6892,
                                                      "loc": {
                                                        "start": {
                                                          "line": 185,
                                                          "column": 84
                                                        },
                                                        "end": {
                                                          "line": 185,
                                                          "column": 88
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 6894,
                                                    "end": 6911,
                                                    "loc": {
                                                      "start": {
                                                        "line": 185,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 185,
                                                        "column": 107
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 6894,
                                                      "end": 6905,
                                                      "loc": {
                                                        "start": {
                                                          "line": 185,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 185,
                                                          "column": 101
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 6907,
                                                      "end": 6911,
                                                      "loc": {
                                                        "start": {
                                                          "line": 185,
                                                          "column": 103
                                                        },
                                                        "end": {
                                                          "line": 185,
                                                          "column": 107
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 6935,
                                        "end": 7089,
                                        "loc": {
                                          "start": {
                                            "line": 186,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 187,
                                            "column": 108
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 6939,
                                          "end": 6979,
                                          "loc": {
                                            "start": {
                                              "line": 186,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 186,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 6939,
                                            "end": 6954,
                                            "loc": {
                                              "start": {
                                                "line": 186,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 186,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 6939,
                                              "end": 6947,
                                              "loc": {
                                                "start": {
                                                  "line": 186,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 186,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 6939,
                                                "end": 6943,
                                                "loc": {
                                                  "start": {
                                                    "line": 186,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 186,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 6944,
                                                "end": 6947,
                                                "loc": {
                                                  "start": {
                                                    "line": 186,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 186,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 6948,
                                                "end": 6953,
                                                "loc": {
                                                  "start": {
                                                    "line": 186,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 186,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 6948,
                                                  "end": 6951,
                                                  "loc": {
                                                    "start": {
                                                      "line": 186,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 186,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 6952,
                                                  "end": 6953,
                                                  "loc": {
                                                    "start": {
                                                      "line": 186,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 186,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "x"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 6958,
                                            "end": 6979,
                                            "loc": {
                                              "start": {
                                                "line": 186,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 186,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 6958,
                                              "end": 6962,
                                              "loc": {
                                                "start": {
                                                  "line": 186,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 186,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 6963,
                                              "end": 6979,
                                              "loc": {
                                                "start": {
                                                  "line": 186,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 186,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 7005,
                                          "end": 7089,
                                          "loc": {
                                            "start": {
                                              "line": 187,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 187,
                                              "column": 108
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 7005,
                                            "end": 7088,
                                            "loc": {
                                              "start": {
                                                "line": 187,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 187,
                                                "column": 107
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7005,
                                              "end": 7014,
                                              "loc": {
                                                "start": {
                                                  "line": 187,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 187,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7005,
                                                "end": 7010,
                                                "loc": {
                                                  "start": {
                                                    "line": 187,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 187,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7011,
                                                "end": 7014,
                                                "loc": {
                                                  "start": {
                                                    "line": 187,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 187,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7015,
                                                "end": 7042,
                                                "loc": {
                                                  "start": {
                                                    "line": 187,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 187,
                                                    "column": 61
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 7015,
                                                  "end": 7030,
                                                  "loc": {
                                                    "start": {
                                                      "line": 187,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 187,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 7015,
                                                    "end": 7025,
                                                    "loc": {
                                                      "start": {
                                                        "line": 187,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 187,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 7026,
                                                    "end": 7030,
                                                    "loc": {
                                                      "start": {
                                                        "line": 187,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 187,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7031,
                                                  "end": 7042,
                                                  "loc": {
                                                    "start": {
                                                      "line": 187,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 187,
                                                      "column": 61
                                                    }
                                                  },
                                                  "name": "VERTICALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 7044,
                                                "end": 7053,
                                                "loc": {
                                                  "start": {
                                                    "line": 187,
                                                    "column": 63
                                                  },
                                                  "end": {
                                                    "line": 187,
                                                    "column": 72
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 7045,
                                                    "end": 7052,
                                                    "loc": {
                                                      "start": {
                                                        "line": 187,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 187,
                                                        "column": 71
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 7055,
                                                "end": 7087,
                                                "loc": {
                                                  "start": {
                                                    "line": 187,
                                                    "column": 74
                                                  },
                                                  "end": {
                                                    "line": 187,
                                                    "column": 106
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 7056,
                                                    "end": 7067,
                                                    "loc": {
                                                      "start": {
                                                        "line": 187,
                                                        "column": 75
                                                      },
                                                      "end": {
                                                        "line": 187,
                                                        "column": 86
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7056,
                                                      "end": 7061,
                                                      "loc": {
                                                        "start": {
                                                          "line": 187,
                                                          "column": 75
                                                        },
                                                        "end": {
                                                          "line": 187,
                                                          "column": 80
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7063,
                                                      "end": 7067,
                                                      "loc": {
                                                        "start": {
                                                          "line": 187,
                                                          "column": 82
                                                        },
                                                        "end": {
                                                          "line": 187,
                                                          "column": 86
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 7069,
                                                    "end": 7086,
                                                    "loc": {
                                                      "start": {
                                                        "line": 187,
                                                        "column": 88
                                                      },
                                                      "end": {
                                                        "line": 187,
                                                        "column": 105
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7069,
                                                      "end": 7080,
                                                      "loc": {
                                                        "start": {
                                                          "line": 187,
                                                          "column": 88
                                                        },
                                                        "end": {
                                                          "line": 187,
                                                          "column": 99
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7082,
                                                      "end": 7086,
                                                      "loc": {
                                                        "start": {
                                                          "line": 187,
                                                          "column": 101
                                                        },
                                                        "end": {
                                                          "line": 187,
                                                          "column": 105
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null,
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 6656,
                                      "end": 6677,
                                      "loc": {
                                        "start": {
                                          "line": 182,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 182,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        6656,
                                        6677
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            "alternate": null
                          },
                          {
                            "type": "ForOfStatement",
                            "start": 7135,
                            "end": 8736,
                            "loc": {
                              "start": {
                                "line": 191,
                                "column": 12
                              },
                              "end": {
                                "line": 214,
                                "column": 13
                              }
                            },
                            "left": {
                              "type": "VariableDeclaration",
                              "start": 7140,
                              "end": 7152,
                              "loc": {
                                "start": {
                                  "line": 191,
                                  "column": 17
                                },
                                "end": {
                                  "line": 191,
                                  "column": 29
                                }
                              },
                              "declarations": [
                                {
                                  "type": "VariableDeclarator",
                                  "start": 7144,
                                  "end": 7152,
                                  "loc": {
                                    "start": {
                                      "line": 191,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 191,
                                      "column": 29
                                    }
                                  },
                                  "id": {
                                    "type": "Identifier",
                                    "start": 7144,
                                    "end": 7152,
                                    "loc": {
                                      "start": {
                                        "line": 191,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 191,
                                        "column": 29
                                      }
                                    },
                                    "name": "otherObj"
                                  },
                                  "init": null
                                }
                              ],
                              "kind": "var"
                            },
                            "right": {
                              "type": "Identifier",
                              "start": 7156,
                              "end": 7166,
                              "loc": {
                                "start": {
                                  "line": 191,
                                  "column": 33
                                },
                                "end": {
                                  "line": 191,
                                  "column": 43
                                }
                              },
                              "name": "allObjects"
                            },
                            "body": {
                              "type": "BlockStatement",
                              "start": 7168,
                              "end": 8736,
                              "loc": {
                                "start": {
                                  "line": 191,
                                  "column": 45
                                },
                                "end": {
                                  "line": 214,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "IfStatement",
                                  "start": 7186,
                                  "end": 8722,
                                  "loc": {
                                    "start": {
                                      "line": 192,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 213,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "LogicalExpression",
                                    "start": 7190,
                                    "end": 7334,
                                    "loc": {
                                      "start": {
                                        "line": 192,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 193,
                                        "column": 90
                                      }
                                    },
                                    "left": {
                                      "type": "LogicalExpression",
                                      "start": 7190,
                                      "end": 7243,
                                      "loc": {
                                        "start": {
                                          "line": 192,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 192,
                                          "column": 73
                                        }
                                      },
                                      "left": {
                                        "type": "BinaryExpression",
                                        "start": 7190,
                                        "end": 7214,
                                        "loc": {
                                          "start": {
                                            "line": 192,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 192,
                                            "column": 44
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7190,
                                          "end": 7197,
                                          "loc": {
                                            "start": {
                                              "line": 192,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 192,
                                              "column": 27
                                            }
                                          },
                                          "name": "baseObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7209,
                                          "end": 7214,
                                          "loc": {
                                            "start": {
                                              "line": 192,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 192,
                                              "column": 44
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      },
                                      "operator": "&&",
                                      "right": {
                                        "type": "BinaryExpression",
                                        "start": 7218,
                                        "end": 7243,
                                        "loc": {
                                          "start": {
                                            "line": 192,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 192,
                                            "column": 73
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7218,
                                          "end": 7226,
                                          "loc": {
                                            "start": {
                                              "line": 192,
                                              "column": 48
                                            },
                                            "end": {
                                              "line": 192,
                                              "column": 56
                                            }
                                          },
                                          "name": "otherObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7238,
                                          "end": 7243,
                                          "loc": {
                                            "start": {
                                              "line": 192,
                                              "column": 68
                                            },
                                            "end": {
                                              "line": 192,
                                              "column": 73
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      }
                                    },
                                    "operator": "&&",
                                    "right": {
                                      "type": "BinaryExpression",
                                      "start": 7264,
                                      "end": 7334,
                                      "loc": {
                                        "start": {
                                          "line": 193,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 193,
                                          "column": 90
                                        }
                                      },
                                      "left": {
                                        "type": "CallExpression",
                                        "start": 7264,
                                        "end": 7310,
                                        "loc": {
                                          "start": {
                                            "line": 193,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 193,
                                            "column": 66
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 7264,
                                          "end": 7291,
                                          "loc": {
                                            "start": {
                                              "line": 193,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 193,
                                              "column": 47
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 7264,
                                            "end": 7280,
                                            "loc": {
                                              "start": {
                                                "line": 193,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 193,
                                                "column": 36
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7264,
                                              "end": 7271,
                                              "loc": {
                                                "start": {
                                                  "line": 193,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 193,
                                                  "column": 27
                                                }
                                              },
                                              "name": "baseObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7272,
                                              "end": 7280,
                                              "loc": {
                                                "start": {
                                                  "line": 193,
                                                  "column": 28
                                                },
                                                "end": {
                                                  "line": 193,
                                                  "column": 36
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 7281,
                                            "end": 7291,
                                            "loc": {
                                              "start": {
                                                "line": 193,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 193,
                                                "column": 47
                                              }
                                            },
                                            "name": "distanceTo"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 7292,
                                            "end": 7309,
                                            "loc": {
                                              "start": {
                                                "line": 193,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 193,
                                                "column": 65
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7292,
                                              "end": 7300,
                                              "loc": {
                                                "start": {
                                                  "line": 193,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 193,
                                                  "column": 56
                                                }
                                              },
                                              "name": "otherObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7301,
                                              "end": 7309,
                                              "loc": {
                                                "start": {
                                                  "line": 193,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 193,
                                                  "column": 65
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          }
                                        ]
                                      },
                                      "operator": "<=",
                                      "right": {
                                        "type": "MemberExpression",
                                        "start": 7314,
                                        "end": 7334,
                                        "loc": {
                                          "start": {
                                            "line": 193,
                                            "column": 70
                                          },
                                          "end": {
                                            "line": 193,
                                            "column": 90
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 7314,
                                          "end": 7318,
                                          "loc": {
                                            "start": {
                                              "line": 193,
                                              "column": 70
                                            },
                                            "end": {
                                              "line": 193,
                                              "column": 74
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 7319,
                                          "end": 7334,
                                          "loc": {
                                            "start": {
                                              "line": 193,
                                              "column": 75
                                            },
                                            "end": {
                                              "line": 193,
                                              "column": 90
                                            }
                                          },
                                          "name": "linearTolerance"
                                        },
                                        "computed": false
                                      }
                                    }
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 7336,
                                    "end": 8722,
                                    "loc": {
                                      "start": {
                                        "line": 193,
                                        "column": 92
                                      },
                                      "end": {
                                        "line": 213,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "ExpressionStatement",
                                        "start": 7418,
                                        "end": 7497,
                                        "loc": {
                                          "start": {
                                            "line": 195,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 195,
                                            "column": 99
                                          }
                                        },
                                        "expression": {
                                          "type": "CallExpression",
                                          "start": 7418,
                                          "end": 7496,
                                          "loc": {
                                            "start": {
                                              "line": 195,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 195,
                                              "column": 98
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 7418,
                                            "end": 7427,
                                            "loc": {
                                              "start": {
                                                "line": 195,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 195,
                                                "column": 29
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7418,
                                              "end": 7423,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 25
                                                }
                                              },
                                              "name": "adder",
                                              "leadingComments": null
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7424,
                                              "end": 7427,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 26
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 29
                                                }
                                              },
                                              "name": "add"
                                            },
                                            "computed": false,
                                            "leadingComments": null
                                          },
                                          "arguments": [
                                            {
                                              "type": "MemberExpression",
                                              "start": 7428,
                                              "end": 7453,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 30
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 55
                                                }
                                              },
                                              "object": {
                                                "type": "MemberExpression",
                                                "start": 7428,
                                                "end": 7443,
                                                "loc": {
                                                  "start": {
                                                    "line": 195,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 195,
                                                    "column": 45
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7428,
                                                  "end": 7438,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 30
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 40
                                                    }
                                                  },
                                                  "name": "Constraint"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7439,
                                                  "end": 7443,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 41
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 45
                                                    }
                                                  },
                                                  "name": "Type"
                                                },
                                                "computed": false
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7444,
                                                "end": 7453,
                                                "loc": {
                                                  "start": {
                                                    "line": 195,
                                                    "column": 46
                                                  },
                                                  "end": {
                                                    "line": 195,
                                                    "column": 55
                                                  }
                                                },
                                                "name": "INCIDENCE"
                                              },
                                              "computed": false
                                            },
                                            {
                                              "type": "ArrayExpression",
                                              "start": 7455,
                                              "end": 7474,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 76
                                                }
                                              },
                                              "elements": [
                                                {
                                                  "type": "Identifier",
                                                  "start": 7456,
                                                  "end": 7463,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 58
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 65
                                                    }
                                                  },
                                                  "name": "baseObj"
                                                },
                                                {
                                                  "type": "Identifier",
                                                  "start": 7465,
                                                  "end": 7473,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 67
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 75
                                                    }
                                                  },
                                                  "name": "otherObj"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "ObjectExpression",
                                              "start": 7476,
                                              "end": 7495,
                                              "loc": {
                                                "start": {
                                                  "line": 195,
                                                  "column": 78
                                                },
                                                "end": {
                                                  "line": 195,
                                                  "column": 97
                                                }
                                              },
                                              "properties": [
                                                {
                                                  "type": "Property",
                                                  "start": 7477,
                                                  "end": 7494,
                                                  "loc": {
                                                    "start": {
                                                      "line": 195,
                                                      "column": 79
                                                    },
                                                    "end": {
                                                      "line": 195,
                                                      "column": 96
                                                    }
                                                  },
                                                  "method": false,
                                                  "shorthand": false,
                                                  "computed": false,
                                                  "key": {
                                                    "type": "Identifier",
                                                    "start": 7477,
                                                    "end": 7488,
                                                    "loc": {
                                                      "start": {
                                                        "line": 195,
                                                        "column": 79
                                                      },
                                                      "end": {
                                                        "line": 195,
                                                        "column": 90
                                                      }
                                                    },
                                                    "name": "noVisualize"
                                                  },
                                                  "value": {
                                                    "type": "Literal",
                                                    "start": 7490,
                                                    "end": 7494,
                                                    "loc": {
                                                      "start": {
                                                        "line": 195,
                                                        "column": 92
                                                      },
                                                      "end": {
                                                        "line": 195,
                                                        "column": 96
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  },
                                                  "kind": "init"
                                                }
                                              ]
                                            }
                                          ],
                                          "leadingComments": null
                                        },
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied incidence of points",
                                            "start": 7358,
                                            "end": 7397,
                                            "loc": {
                                              "start": {
                                                "line": 194,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 194,
                                                "column": 59
                                              }
                                            },
                                            "range": [
                                              7358,
                                              7397
                                            ]
                                          }
                                        ],
                                        "trailingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7519,
                                            "end": 7569,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7519,
                                              7569
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "VariableDeclaration",
                                        "start": 7590,
                                        "end": 7647,
                                        "loc": {
                                          "start": {
                                            "line": 198,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 198,
                                            "column": 77
                                          }
                                        },
                                        "declarations": [
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 7594,
                                            "end": 7618,
                                            "loc": {
                                              "start": {
                                                "line": 198,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 198,
                                                "column": 48
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 7594,
                                              "end": 7601,
                                              "loc": {
                                                "start": {
                                                  "line": 198,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 198,
                                                  "column": 31
                                                }
                                              },
                                              "name": "basePar",
                                              "leadingComments": null
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 7604,
                                              "end": 7618,
                                              "loc": {
                                                "start": {
                                                  "line": 198,
                                                  "column": 34
                                                },
                                                "end": {
                                                  "line": 198,
                                                  "column": 48
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7604,
                                                "end": 7611,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 41
                                                  }
                                                },
                                                "name": "baseObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7612,
                                                "end": 7618,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 42
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 48
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            },
                                            "leadingComments": null
                                          },
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 7620,
                                            "end": 7646,
                                            "loc": {
                                              "start": {
                                                "line": 198,
                                                "column": 50
                                              },
                                              "end": {
                                                "line": 198,
                                                "column": 76
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 7620,
                                              "end": 7628,
                                              "loc": {
                                                "start": {
                                                  "line": 198,
                                                  "column": 50
                                                },
                                                "end": {
                                                  "line": 198,
                                                  "column": 58
                                                }
                                              },
                                              "name": "otherPar"
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 7631,
                                              "end": 7646,
                                              "loc": {
                                                "start": {
                                                  "line": 198,
                                                  "column": 61
                                                },
                                                "end": {
                                                  "line": 198,
                                                  "column": 76
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7631,
                                                "end": 7639,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 61
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 69
                                                  }
                                                },
                                                "name": "otherObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7640,
                                                "end": 7646,
                                                "loc": {
                                                  "start": {
                                                    "line": 198,
                                                    "column": 70
                                                  },
                                                  "end": {
                                                    "line": 198,
                                                    "column": 76
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            }
                                          }
                                        ],
                                        "kind": "var",
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7519,
                                            "end": 7569,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7519,
                                              7569
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 7668,
                                        "end": 8704,
                                        "loc": {
                                          "start": {
                                            "line": 199,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 212,
                                            "column": 21
                                          }
                                        },
                                        "test": {
                                          "type": "LogicalExpression",
                                          "start": 7672,
                                          "end": 7818,
                                          "loc": {
                                            "start": {
                                              "line": 199,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 200,
                                              "column": 72
                                            }
                                          },
                                          "left": {
                                            "type": "LogicalExpression",
                                            "start": 7672,
                                            "end": 7789,
                                            "loc": {
                                              "start": {
                                                "line": 199,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 200,
                                                "column": 43
                                              }
                                            },
                                            "left": {
                                              "type": "LogicalExpression",
                                              "start": 7672,
                                              "end": 7745,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 97
                                                }
                                              },
                                              "left": {
                                                "type": "BinaryExpression",
                                                "start": 7672,
                                                "end": 7706,
                                                "loc": {
                                                  "start": {
                                                    "line": 199,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 199,
                                                    "column": 58
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 7672,
                                                  "end": 7679,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 24
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 31
                                                    }
                                                  },
                                                  "name": "basePar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 7691,
                                                  "end": 7706,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 43
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 58
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              },
                                              "operator": "&&",
                                              "right": {
                                                "type": "BinaryExpression",
                                                "start": 7710,
                                                "end": 7745,
                                                "loc": {
                                                  "start": {
                                                    "line": 199,
                                                    "column": 62
                                                  },
                                                  "end": {
                                                    "line": 199,
                                                    "column": 97
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 7710,
                                                  "end": 7718,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 62
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 70
                                                    }
                                                  },
                                                  "name": "otherPar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 7730,
                                                  "end": 7745,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 82
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 97
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              }
                                            },
                                            "operator": "&&",
                                            "right": {
                                              "type": "BinaryExpression",
                                              "start": 7770,
                                              "end": 7789,
                                              "loc": {
                                                "start": {
                                                  "line": 200,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 200,
                                                  "column": 43
                                                }
                                              },
                                              "left": {
                                                "type": "Identifier",
                                                "start": 7770,
                                                "end": 7777,
                                                "loc": {
                                                  "start": {
                                                    "line": 200,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 200,
                                                    "column": 31
                                                  }
                                                },
                                                "name": "basePar"
                                              },
                                              "operator": "!=",
                                              "right": {
                                                "type": "Identifier",
                                                "start": 7781,
                                                "end": 7789,
                                                "loc": {
                                                  "start": {
                                                    "line": 200,
                                                    "column": 35
                                                  },
                                                  "end": {
                                                    "line": 200,
                                                    "column": 43
                                                  }
                                                },
                                                "name": "otherPar"
                                              }
                                            }
                                          },
                                          "operator": "&&",
                                          "right": {
                                            "type": "CallExpression",
                                            "start": 7793,
                                            "end": 7818,
                                            "loc": {
                                              "start": {
                                                "line": 200,
                                                "column": 47
                                              },
                                              "end": {
                                                "line": 200,
                                                "column": 72
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7793,
                                              "end": 7809,
                                              "loc": {
                                                "start": {
                                                  "line": 200,
                                                  "column": 47
                                                },
                                                "end": {
                                                  "line": 200,
                                                  "column": 63
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7793,
                                                "end": 7805,
                                                "loc": {
                                                  "start": {
                                                    "line": 200,
                                                    "column": 47
                                                  },
                                                  "end": {
                                                    "line": 200,
                                                    "column": 59
                                                  }
                                                },
                                                "name": "relatedToSet"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7806,
                                                "end": 7809,
                                                "loc": {
                                                  "start": {
                                                    "line": 200,
                                                    "column": 60
                                                  },
                                                  "end": {
                                                    "line": 200,
                                                    "column": 63
                                                  }
                                                },
                                                "name": "has"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "Identifier",
                                                "start": 7810,
                                                "end": 7817,
                                                "loc": {
                                                  "start": {
                                                    "line": 200,
                                                    "column": 64
                                                  },
                                                  "end": {
                                                    "line": 200,
                                                    "column": 71
                                                  }
                                                },
                                                "name": "basePar"
                                              }
                                            ]
                                          }
                                        },
                                        "consequent": {
                                          "type": "BlockStatement",
                                          "start": 7820,
                                          "end": 8704,
                                          "loc": {
                                            "start": {
                                              "line": 200,
                                              "column": 74
                                            },
                                            "end": {
                                              "line": 212,
                                              "column": 21
                                            }
                                          },
                                          "body": [
                                            {
                                              "type": "IfStatement",
                                              "start": 7846,
                                              "end": 8682,
                                              "loc": {
                                                "start": {
                                                  "line": 201,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 211,
                                                  "column": 25
                                                }
                                              },
                                              "test": {
                                                "type": "LogicalExpression",
                                                "start": 7850,
                                                "end": 7932,
                                                "loc": {
                                                  "start": {
                                                    "line": 201,
                                                    "column": 28
                                                  },
                                                  "end": {
                                                    "line": 201,
                                                    "column": 110
                                                  }
                                                },
                                                "left": {
                                                  "type": "BinaryExpression",
                                                  "start": 7850,
                                                  "end": 7888,
                                                  "loc": {
                                                    "start": {
                                                      "line": 201,
                                                      "column": 28
                                                    },
                                                    "end": {
                                                      "line": 201,
                                                      "column": 66
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 7850,
                                                    "end": 7881,
                                                    "loc": {
                                                      "start": {
                                                        "line": 201,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 201,
                                                        "column": 59
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 7850,
                                                      "end": 7872,
                                                      "loc": {
                                                        "start": {
                                                          "line": 201,
                                                          "column": 28
                                                        },
                                                        "end": {
                                                          "line": 201,
                                                          "column": 50
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 7850,
                                                        "end": 7864,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 28
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 42
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 7850,
                                                          "end": 7857,
                                                          "loc": {
                                                            "start": {
                                                              "line": 201,
                                                              "column": 28
                                                            },
                                                            "end": {
                                                              "line": 201,
                                                              "column": 35
                                                            }
                                                          },
                                                          "name": "basePar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 7858,
                                                          "end": 7864,
                                                          "loc": {
                                                            "start": {
                                                              "line": 201,
                                                              "column": 36
                                                            },
                                                            "end": {
                                                              "line": 201,
                                                              "column": 42
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 7865,
                                                        "end": 7872,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 43
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 50
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 7873,
                                                        "end": 7880,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 51
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 58
                                                          }
                                                        },
                                                        "name": "baseObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 7886,
                                                    "end": 7888,
                                                    "loc": {
                                                      "start": {
                                                        "line": 201,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 201,
                                                        "column": 66
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 7887,
                                                      "end": 7888,
                                                      "loc": {
                                                        "start": {
                                                          "line": 201,
                                                          "column": 65
                                                        },
                                                        "end": {
                                                          "line": 201,
                                                          "column": 66
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                },
                                                "operator": "&&",
                                                "right": {
                                                  "type": "BinaryExpression",
                                                  "start": 7892,
                                                  "end": 7932,
                                                  "loc": {
                                                    "start": {
                                                      "line": 201,
                                                      "column": 70
                                                    },
                                                    "end": {
                                                      "line": 201,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 7892,
                                                    "end": 7925,
                                                    "loc": {
                                                      "start": {
                                                        "line": 201,
                                                        "column": 70
                                                      },
                                                      "end": {
                                                        "line": 201,
                                                        "column": 103
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 7892,
                                                      "end": 7915,
                                                      "loc": {
                                                        "start": {
                                                          "line": 201,
                                                          "column": 70
                                                        },
                                                        "end": {
                                                          "line": 201,
                                                          "column": 93
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 7892,
                                                        "end": 7907,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 70
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 85
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 7892,
                                                          "end": 7900,
                                                          "loc": {
                                                            "start": {
                                                              "line": 201,
                                                              "column": 70
                                                            },
                                                            "end": {
                                                              "line": 201,
                                                              "column": 78
                                                            }
                                                          },
                                                          "name": "otherPar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 7901,
                                                          "end": 7907,
                                                          "loc": {
                                                            "start": {
                                                              "line": 201,
                                                              "column": 79
                                                            },
                                                            "end": {
                                                              "line": 201,
                                                              "column": 85
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 7908,
                                                        "end": 7915,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 86
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 93
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 7916,
                                                        "end": 7924,
                                                        "loc": {
                                                          "start": {
                                                            "line": 201,
                                                            "column": 94
                                                          },
                                                          "end": {
                                                            "line": 201,
                                                            "column": 102
                                                          }
                                                        },
                                                        "name": "otherObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 7930,
                                                    "end": 7932,
                                                    "loc": {
                                                      "start": {
                                                        "line": 201,
                                                        "column": 108
                                                      },
                                                      "end": {
                                                        "line": 201,
                                                        "column": 110
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 7931,
                                                      "end": 7932,
                                                      "loc": {
                                                        "start": {
                                                          "line": 201,
                                                          "column": 109
                                                        },
                                                        "end": {
                                                          "line": 201,
                                                          "column": 110
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                }
                                              },
                                              "consequent": {
                                                "type": "BlockStatement",
                                                "start": 7934,
                                                "end": 8682,
                                                "loc": {
                                                  "start": {
                                                    "line": 201,
                                                    "column": 112
                                                  },
                                                  "end": {
                                                    "line": 211,
                                                    "column": 25
                                                  }
                                                },
                                                "body": [
                                                  {
                                                    "type": "VariableDeclaration",
                                                    "start": 7964,
                                                    "end": 8098,
                                                    "loc": {
                                                      "start": {
                                                        "line": 202,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 203,
                                                        "column": 82
                                                      }
                                                    },
                                                    "declarations": [
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 7968,
                                                        "end": 8014,
                                                        "loc": {
                                                          "start": {
                                                            "line": 202,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 202,
                                                            "column": 78
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 7968,
                                                          "end": 7975,
                                                          "loc": {
                                                            "start": {
                                                              "line": 202,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 202,
                                                              "column": 39
                                                            }
                                                          },
                                                          "name": "baseDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 7978,
                                                          "end": 8014,
                                                          "loc": {
                                                            "start": {
                                                              "line": 202,
                                                              "column": 42
                                                            },
                                                            "end": {
                                                              "line": 202,
                                                              "column": 78
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 7978,
                                                            "end": 7996,
                                                            "loc": {
                                                              "start": {
                                                                "line": 202,
                                                                "column": 42
                                                              },
                                                              "end": {
                                                                "line": 202,
                                                                "column": 60
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 7978,
                                                              "end": 7985,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 202,
                                                                  "column": 42
                                                                },
                                                                "end": {
                                                                  "line": 202,
                                                                  "column": 49
                                                                }
                                                              },
                                                              "name": "basePar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 7986,
                                                              "end": 7996,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 202,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 202,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 7997,
                                                              "end": 8013,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 202,
                                                                  "column": 61
                                                                },
                                                                "end": {
                                                                  "line": 202,
                                                                  "column": 77
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 7997,
                                                                "end": 8004,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 202,
                                                                    "column": 61
                                                                  },
                                                                  "end": {
                                                                    "line": 202,
                                                                    "column": 68
                                                                  }
                                                                },
                                                                "name": "baseObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8005,
                                                                "end": 8013,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 202,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 202,
                                                                    "column": 77
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 8048,
                                                        "end": 8097,
                                                        "loc": {
                                                          "start": {
                                                            "line": 203,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 203,
                                                            "column": 81
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 8048,
                                                          "end": 8056,
                                                          "loc": {
                                                            "start": {
                                                              "line": 203,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 203,
                                                              "column": 40
                                                            }
                                                          },
                                                          "name": "otherDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 8059,
                                                          "end": 8097,
                                                          "loc": {
                                                            "start": {
                                                              "line": 203,
                                                              "column": 43
                                                            },
                                                            "end": {
                                                              "line": 203,
                                                              "column": 81
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8059,
                                                            "end": 8078,
                                                            "loc": {
                                                              "start": {
                                                                "line": 203,
                                                                "column": 43
                                                              },
                                                              "end": {
                                                                "line": 203,
                                                                "column": 62
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8059,
                                                              "end": 8067,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 203,
                                                                  "column": 43
                                                                },
                                                                "end": {
                                                                  "line": 203,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "otherPar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8068,
                                                              "end": 8078,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 203,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 203,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8079,
                                                              "end": 8096,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 203,
                                                                  "column": 63
                                                                },
                                                                "end": {
                                                                  "line": 203,
                                                                  "column": 80
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8079,
                                                                "end": 8087,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 203,
                                                                    "column": 63
                                                                  },
                                                                  "end": {
                                                                    "line": 203,
                                                                    "column": 71
                                                                  }
                                                                },
                                                                "name": "otherObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8088,
                                                                "end": 8096,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 203,
                                                                    "column": 72
                                                                  },
                                                                  "end": {
                                                                    "line": 203,
                                                                    "column": 80
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      }
                                                    ],
                                                    "kind": "var"
                                                  },
                                                  {
                                                    "type": "IfStatement",
                                                    "start": 8127,
                                                    "end": 8656,
                                                    "loc": {
                                                      "start": {
                                                        "line": 204,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 210,
                                                        "column": 29
                                                      }
                                                    },
                                                    "test": {
                                                      "type": "LogicalExpression",
                                                      "start": 8131,
                                                      "end": 8307,
                                                      "loc": {
                                                        "start": {
                                                          "line": 204,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 205,
                                                          "column": 92
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "LogicalExpression",
                                                        "start": 8131,
                                                        "end": 8214,
                                                        "loc": {
                                                          "start": {
                                                            "line": 204,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 204,
                                                            "column": 115
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "BinaryExpression",
                                                          "start": 8131,
                                                          "end": 8170,
                                                          "loc": {
                                                            "start": {
                                                              "line": 204,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 204,
                                                              "column": 71
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8131,
                                                            "end": 8147,
                                                            "loc": {
                                                              "start": {
                                                                "line": 204,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 204,
                                                                "column": 48
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8131,
                                                              "end": 8145,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8131,
                                                                "end": 8138,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 204,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 204,
                                                                    "column": 39
                                                                  }
                                                                },
                                                                "name": "baseDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8139,
                                                                "end": 8145,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 204,
                                                                    "column": 40
                                                                  },
                                                                  "end": {
                                                                    "line": 204,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8150,
                                                            "end": 8170,
                                                            "loc": {
                                                              "start": {
                                                                "line": 204,
                                                                "column": 51
                                                              },
                                                              "end": {
                                                                "line": 204,
                                                                "column": 71
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8150,
                                                              "end": 8154,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 51
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 55
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8155,
                                                              "end": 8170,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 56
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 71
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        },
                                                        "operator": "&&",
                                                        "right": {
                                                          "type": "BinaryExpression",
                                                          "start": 8174,
                                                          "end": 8214,
                                                          "loc": {
                                                            "start": {
                                                              "line": 204,
                                                              "column": 75
                                                            },
                                                            "end": {
                                                              "line": 204,
                                                              "column": 115
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8174,
                                                            "end": 8191,
                                                            "loc": {
                                                              "start": {
                                                                "line": 204,
                                                                "column": 75
                                                              },
                                                              "end": {
                                                                "line": 204,
                                                                "column": 92
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8174,
                                                              "end": 8189,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 75
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 90
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8174,
                                                                "end": 8182,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 204,
                                                                    "column": 75
                                                                  },
                                                                  "end": {
                                                                    "line": 204,
                                                                    "column": 83
                                                                  }
                                                                },
                                                                "name": "otherDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8183,
                                                                "end": 8189,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 204,
                                                                    "column": 84
                                                                  },
                                                                  "end": {
                                                                    "line": 204,
                                                                    "column": 90
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8194,
                                                            "end": 8214,
                                                            "loc": {
                                                              "start": {
                                                                "line": 204,
                                                                "column": 95
                                                              },
                                                              "end": {
                                                                "line": 204,
                                                                "column": 115
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8194,
                                                              "end": 8198,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 95
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 99
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8199,
                                                              "end": 8214,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 204,
                                                                  "column": 100
                                                                },
                                                                "end": {
                                                                  "line": 204,
                                                                  "column": 115
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        }
                                                      },
                                                      "operator": "&&",
                                                      "right": {
                                                        "type": "BinaryExpression",
                                                        "start": 8247,
                                                        "end": 8307,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 92
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "CallExpression",
                                                          "start": 8247,
                                                          "end": 8282,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 67
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8247,
                                                            "end": 8255,
                                                            "loc": {
                                                              "start": {
                                                                "line": 205,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 205,
                                                                "column": 40
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8247,
                                                              "end": 8251,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 205,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 205,
                                                                  "column": 36
                                                                }
                                                              },
                                                              "name": "Math"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8252,
                                                              "end": 8255,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 205,
                                                                  "column": 37
                                                                },
                                                                "end": {
                                                                  "line": 205,
                                                                  "column": 40
                                                                }
                                                              },
                                                              "name": "abs"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8256,
                                                              "end": 8281,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 205,
                                                                  "column": 41
                                                                },
                                                                "end": {
                                                                  "line": 205,
                                                                  "column": 66
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "CallExpression",
                                                                "start": 8256,
                                                                "end": 8279,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 205,
                                                                    "column": 41
                                                                  },
                                                                  "end": {
                                                                    "line": 205,
                                                                    "column": 64
                                                                  }
                                                                },
                                                                "callee": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8256,
                                                                  "end": 8269,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 205,
                                                                      "column": 41
                                                                    },
                                                                    "end": {
                                                                      "line": 205,
                                                                      "column": 54
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "Identifier",
                                                                    "start": 8256,
                                                                    "end": 8263,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 205,
                                                                        "column": 41
                                                                      },
                                                                      "end": {
                                                                        "line": 205,
                                                                        "column": 48
                                                                      }
                                                                    },
                                                                    "name": "baseDir"
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8264,
                                                                    "end": 8269,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 205,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 205,
                                                                        "column": 54
                                                                      }
                                                                    },
                                                                    "name": "cross"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "arguments": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8270,
                                                                    "end": 8278,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 205,
                                                                        "column": 55
                                                                      },
                                                                      "end": {
                                                                        "line": 205,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "otherDir"
                                                                  }
                                                                ]
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8280,
                                                                "end": 8281,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 205,
                                                                    "column": 65
                                                                  },
                                                                  "end": {
                                                                    "line": 205,
                                                                    "column": 66
                                                                  }
                                                                },
                                                                "name": "z"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        },
                                                        "operator": "<=",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 8286,
                                                          "end": 8307,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 92
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "ThisExpression",
                                                            "start": 8286,
                                                            "end": 8290,
                                                            "loc": {
                                                              "start": {
                                                                "line": 205,
                                                                "column": 71
                                                              },
                                                              "end": {
                                                                "line": 205,
                                                                "column": 75
                                                              }
                                                            }
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 8291,
                                                            "end": 8307,
                                                            "loc": {
                                                              "start": {
                                                                "line": 205,
                                                                "column": 76
                                                              },
                                                              "end": {
                                                                "line": 205,
                                                                "column": 92
                                                              }
                                                            },
                                                            "name": "angularTolerance"
                                                          },
                                                          "computed": false
                                                        }
                                                      }
                                                    },
                                                    "consequent": {
                                                      "type": "BlockStatement",
                                                      "start": 8309,
                                                      "end": 8656,
                                                      "loc": {
                                                        "start": {
                                                          "line": 205,
                                                          "column": 94
                                                        },
                                                        "end": {
                                                          "line": 210,
                                                          "column": 29
                                                        }
                                                      },
                                                      "body": [
                                                        {
                                                          "type": "VariableDeclaration",
                                                          "start": 8343,
                                                          "end": 8535,
                                                          "loc": {
                                                            "start": {
                                                              "line": 206,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 208,
                                                              "column": 63
                                                            }
                                                          },
                                                          "declarations": [
                                                            {
                                                              "type": "VariableDeclarator",
                                                              "start": 8347,
                                                              "end": 8534,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 206,
                                                                  "column": 36
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "id": {
                                                                "type": "Identifier",
                                                                "start": 8347,
                                                                "end": 8351,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 206,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 206,
                                                                    "column": 40
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              "init": {
                                                                "type": "ConditionalExpression",
                                                                "start": 8354,
                                                                "end": 8534,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 206,
                                                                    "column": 43
                                                                  },
                                                                  "end": {
                                                                    "line": 208,
                                                                    "column": 62
                                                                  }
                                                                },
                                                                "test": {
                                                                  "type": "LogicalExpression",
                                                                  "start": 8355,
                                                                  "end": 8406,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 206,
                                                                      "column": 44
                                                                    },
                                                                    "end": {
                                                                      "line": 206,
                                                                      "column": 95
                                                                    }
                                                                  },
                                                                  "left": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8355,
                                                                    "end": 8378,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 206,
                                                                        "column": 44
                                                                      },
                                                                      "end": {
                                                                        "line": 206,
                                                                        "column": 67
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8355,
                                                                      "end": 8362,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 206,
                                                                          "column": 44
                                                                        },
                                                                        "end": {
                                                                          "line": 206,
                                                                          "column": 51
                                                                        }
                                                                      },
                                                                      "name": "basePar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8374,
                                                                      "end": 8378,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 206,
                                                                          "column": 63
                                                                        },
                                                                        "end": {
                                                                          "line": 206,
                                                                          "column": 67
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "operator": "&&",
                                                                  "right": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8382,
                                                                    "end": 8406,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 206,
                                                                        "column": 71
                                                                      },
                                                                      "end": {
                                                                        "line": 206,
                                                                        "column": 95
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8382,
                                                                      "end": 8390,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 206,
                                                                          "column": 71
                                                                        },
                                                                        "end": {
                                                                          "line": 206,
                                                                          "column": 79
                                                                        }
                                                                      },
                                                                      "name": "otherPar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8402,
                                                                      "end": 8406,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 206,
                                                                          "column": 91
                                                                        },
                                                                        "end": {
                                                                          "line": 206,
                                                                          "column": 95
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "parenthesizedExpression": true
                                                                },
                                                                "consequent": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8446,
                                                                  "end": 8471,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 207,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 207,
                                                                      "column": 63
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8446,
                                                                    "end": 8461,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 207,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 207,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8446,
                                                                      "end": 8456,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 207,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 207,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8457,
                                                                      "end": 8461,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 207,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 207,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8462,
                                                                    "end": 8471,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 207,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 207,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "INCIDENCE"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "alternate": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8510,
                                                                  "end": 8534,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 208,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 208,
                                                                      "column": 62
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8510,
                                                                    "end": 8525,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 208,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 208,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8510,
                                                                      "end": 8520,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 208,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 208,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8521,
                                                                      "end": 8525,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 208,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 208,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8526,
                                                                    "end": 8534,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 208,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 208,
                                                                        "column": 62
                                                                      }
                                                                    },
                                                                    "name": "TANGENCY"
                                                                  },
                                                                  "computed": false
                                                                }
                                                              }
                                                            }
                                                          ],
                                                          "kind": "var"
                                                        },
                                                        {
                                                          "type": "ExpressionStatement",
                                                          "start": 8568,
                                                          "end": 8626,
                                                          "loc": {
                                                            "start": {
                                                              "line": 209,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 209,
                                                              "column": 90
                                                            }
                                                          },
                                                          "expression": {
                                                            "type": "CallExpression",
                                                            "start": 8568,
                                                            "end": 8625,
                                                            "loc": {
                                                              "start": {
                                                                "line": 209,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 209,
                                                                "column": 89
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8568,
                                                              "end": 8577,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 209,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 209,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8568,
                                                                "end": 8573,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 37
                                                                  }
                                                                },
                                                                "name": "adder"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8574,
                                                                "end": 8577,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 38
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "add"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": [
                                                              {
                                                                "type": "Identifier",
                                                                "start": 8578,
                                                                "end": 8582,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 42
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              {
                                                                "type": "ArrayExpression",
                                                                "start": 8584,
                                                                "end": 8603,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 48
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 67
                                                                  }
                                                                },
                                                                "elements": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8585,
                                                                    "end": 8592,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 56
                                                                      }
                                                                    },
                                                                    "name": "basePar"
                                                                  },
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8594,
                                                                    "end": 8602,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 58
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 66
                                                                      }
                                                                    },
                                                                    "name": "otherPar"
                                                                  }
                                                                ]
                                                              },
                                                              {
                                                                "type": "ObjectExpression",
                                                                "start": 8605,
                                                                "end": 8624,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 88
                                                                  }
                                                                },
                                                                "properties": [
                                                                  {
                                                                    "type": "Property",
                                                                    "start": 8606,
                                                                    "end": 8623,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 70
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 87
                                                                      }
                                                                    },
                                                                    "method": false,
                                                                    "shorthand": false,
                                                                    "computed": false,
                                                                    "key": {
                                                                      "type": "Identifier",
                                                                      "start": 8606,
                                                                      "end": 8617,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 209,
                                                                          "column": 70
                                                                        },
                                                                        "end": {
                                                                          "line": 209,
                                                                          "column": 81
                                                                        }
                                                                      },
                                                                      "name": "noVisualize"
                                                                    },
                                                                    "value": {
                                                                      "type": "Literal",
                                                                      "start": 8619,
                                                                      "end": 8623,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 209,
                                                                          "column": 83
                                                                        },
                                                                        "end": {
                                                                          "line": 209,
                                                                          "column": 87
                                                                        }
                                                                      },
                                                                      "value": true,
                                                                      "rawValue": true,
                                                                      "raw": "true"
                                                                    },
                                                                    "kind": "init"
                                                                  }
                                                                ]
                                                              }
                                                            ]
                                                          }
                                                        }
                                                      ]
                                                    },
                                                    "alternate": null
                                                  }
                                                ]
                                              },
                                              "alternate": null
                                            }
                                          ]
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 8756,
                      "end": 8778,
                      "loc": {
                        "start": {
                          "line": 217,
                          "column": 8
                        },
                        "end": {
                          "line": 217,
                          "column": 30
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 8763,
                        "end": 8777,
                        "loc": {
                          "start": {
                            "line": 217,
                            "column": 15
                          },
                          "end": {
                            "line": 217,
                            "column": 29
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 8763,
                          "end": 8775,
                          "loc": {
                            "start": {
                              "line": 217,
                              "column": 15
                            },
                            "end": {
                              "line": 217,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 8763,
                            "end": 8768,
                            "loc": {
                              "start": {
                                "line": 217,
                                "column": 15
                              },
                              "end": {
                                "line": 217,
                                "column": 20
                              }
                            },
                            "name": "adder"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 8769,
                            "end": 8775,
                            "loc": {
                              "start": {
                                "line": 217,
                                "column": 21
                              },
                              "end": {
                                "line": 217,
                                "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": 6000,
                  "end": 6108,
                  "loc": {
                    "start": {
                      "line": 169,
                      "column": 4
                    },
                    "end": {
                      "line": 169,
                      "column": 112
                    }
                  },
                  "range": [
                    6000,
                    6108
                  ]
                }
              ]
            }
          ]
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5381,
            "end": 5460,
            "loc": {
              "start": {
                "line": 147,
                "column": 0
              },
              "end": {
                "line": 147,
                "column": 79
              }
            },
            "range": [
              5381,
              5460
            ]
          },
          {
            "type": "Block",
            "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
            "start": 5461,
            "end": 5553,
            "loc": {
              "start": {
                "line": 148,
                "column": 0
              },
              "end": {
                "line": 150,
                "column": 3
              }
            },
            "range": [
              5461,
              5553
            ]
          }
        ],
        "trailingComments": []
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5381,
          "end": 5460,
          "loc": {
            "start": {
              "line": 147,
              "column": 0
            },
            "end": {
              "line": 147,
              "column": 79
            }
          },
          "range": [
            5381,
            5460
          ]
        },
        {
          "type": "Block",
          "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
          "start": 5461,
          "end": 5553,
          "loc": {
            "start": {
              "line": 148,
              "column": 0
            },
            "end": {
              "line": 150,
              "column": 3
            }
          },
          "range": [
            5461,
            5553
          ]
        }
      ]
    }
  ]
}