{
  "type": "Program",
  "start": 0,
  "end": 8865,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 224,
      "column": 0
    }
  },
  "sourceType": "module",
  "body": [
    {
      "type": "ImportDeclaration",
      "start": 0,
      "end": 48,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 48
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 7,
          "end": 17,
          "loc": {
            "start": {
              "line": 1,
              "column": 7
            },
            "end": {
              "line": 1,
              "column": 17
            }
          },
          "local": {
            "type": "Identifier",
            "start": 7,
            "end": 17,
            "loc": {
              "start": {
                "line": 1,
                "column": 7
              },
              "end": {
                "line": 1,
                "column": 17
              }
            },
            "name": "Constraint"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 23,
        "end": 47,
        "loc": {
          "start": {
            "line": 1,
            "column": 23
          },
          "end": {
            "line": 1,
            "column": 47
          }
        },
        "value": "../sketcher/constraint",
        "rawValue": "../sketcher/constraint",
        "raw": "'../sketcher/constraint'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 49,
      "end": 89,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 40
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 56,
          "end": 62,
          "loc": {
            "start": {
              "line": 2,
              "column": 7
            },
            "end": {
              "line": 2,
              "column": 13
            }
          },
          "local": {
            "type": "Identifier",
            "start": 56,
            "end": 62,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 13
              }
            },
            "name": "Sketch"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 68,
        "end": 88,
        "loc": {
          "start": {
            "line": 2,
            "column": 19
          },
          "end": {
            "line": 2,
            "column": 39
          }
        },
        "value": "../sketcher/sketch",
        "rawValue": "../sketcher/sketch",
        "raw": "'../sketcher/sketch'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 90,
      "end": 159,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 69
        }
      },
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "start": 98,
          "end": 113,
          "loc": {
            "start": {
              "line": 3,
              "column": 8
            },
            "end": {
              "line": 3,
              "column": 23
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 98,
            "end": 113,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          },
          "local": {
            "type": "Identifier",
            "start": 98,
            "end": 113,
            "loc": {
              "start": {
                "line": 3,
                "column": 8
              },
              "end": {
                "line": 3,
                "column": 23
              }
            },
            "name": "GeometricObject"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 115,
          "end": 120,
          "loc": {
            "start": {
              "line": 3,
              "column": 25
            },
            "end": {
              "line": 3,
              "column": 30
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 115,
            "end": 120,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          },
          "local": {
            "type": "Identifier",
            "start": 115,
            "end": 120,
            "loc": {
              "start": {
                "line": 3,
                "column": 25
              },
              "end": {
                "line": 3,
                "column": 30
              }
            },
            "name": "Point"
          }
        },
        {
          "type": "ImportSpecifier",
          "start": 122,
          "end": 126,
          "loc": {
            "start": {
              "line": 3,
              "column": 32
            },
            "end": {
              "line": 3,
              "column": 36
            }
          },
          "imported": {
            "type": "Identifier",
            "start": 122,
            "end": 126,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          },
          "local": {
            "type": "Identifier",
            "start": 122,
            "end": 126,
            "loc": {
              "start": {
                "line": 3,
                "column": 32
              },
              "end": {
                "line": 3,
                "column": 36
              }
            },
            "name": "Line"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 133,
        "end": 158,
        "loc": {
          "start": {
            "line": 3,
            "column": 43
          },
          "end": {
            "line": 3,
            "column": 68
          }
        },
        "value": "../sketcher/geomobjects",
        "rawValue": "../sketcher/geomobjects",
        "raw": "'../sketcher/geomobjects'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 160,
      "end": 186,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 26
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 167,
          "end": 172,
          "loc": {
            "start": {
              "line": 4,
              "column": 7
            },
            "end": {
              "line": 4,
              "column": 12
            }
          },
          "local": {
            "type": "Identifier",
            "start": 167,
            "end": 172,
            "loc": {
              "start": {
                "line": 4,
                "column": 7
              },
              "end": {
                "line": 4,
                "column": 12
              }
            },
            "name": "THREE"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 178,
        "end": 185,
        "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": 188,
          "end": 256,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            188,
            256
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 257,
      "end": 990,
      "loc": {
        "start": {
          "line": 7,
          "column": 0
        },
        "end": {
          "line": 41,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 264,
        "end": 990,
        "loc": {
          "start": {
            "line": 7,
            "column": 7
          },
          "end": {
            "line": 41,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 270,
          "end": 273,
          "loc": {
            "start": {
              "line": 7,
              "column": 13
            },
            "end": {
              "line": 7,
              "column": 16
            }
          },
          "name": "DSU",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 274,
          "end": 990,
          "loc": {
            "start": {
              "line": 7,
              "column": 17
            },
            "end": {
              "line": 41,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 280,
              "end": 335,
              "loc": {
                "start": {
                  "line": 8,
                  "column": 4
                },
                "end": {
                  "line": 10,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 280,
                "end": 291,
                "loc": {
                  "start": {
                    "line": 8,
                    "column": 4
                  },
                  "end": {
                    "line": 8,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 291,
                "end": 335,
                "loc": {
                  "start": {
                    "line": 8,
                    "column": 15
                  },
                  "end": {
                    "line": 10,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 294,
                  "end": 335,
                  "loc": {
                    "start": {
                      "line": 8,
                      "column": 18
                    },
                    "end": {
                      "line": 10,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 304,
                      "end": 329,
                      "loc": {
                        "start": {
                          "line": 9,
                          "column": 8
                        },
                        "end": {
                          "line": 9,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 304,
                        "end": 328,
                        "loc": {
                          "start": {
                            "line": 9,
                            "column": 8
                          },
                          "end": {
                            "line": 9,
                            "column": 32
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 304,
                          "end": 316,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 8
                            },
                            "end": {
                              "line": 9,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 304,
                            "end": 308,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 8
                              },
                              "end": {
                                "line": 9,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 309,
                            "end": 316,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 13
                              },
                              "end": {
                                "line": 9,
                                "column": 20
                              }
                            },
                            "name": "parents"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 319,
                          "end": 328,
                          "loc": {
                            "start": {
                              "line": 9,
                              "column": 23
                            },
                            "end": {
                              "line": 9,
                              "column": 32
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 323,
                            "end": 326,
                            "loc": {
                              "start": {
                                "line": 9,
                                "column": 27
                              },
                              "end": {
                                "line": 9,
                                "column": 30
                              }
                            },
                            "name": "Map"
                          },
                          "arguments": []
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 341,
              "end": 408,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 4
                },
                "end": {
                  "line": 14,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 341,
                "end": 350,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 4
                  },
                  "end": {
                    "line": 12,
                    "column": 13
                  }
                },
                "name": "getParent"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 350,
                "end": 408,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 13
                  },
                  "end": {
                    "line": 14,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 351,
                    "end": 354,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 14
                      },
                      "end": {
                        "line": 12,
                        "column": 17
                      }
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 356,
                  "end": 408,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 19
                    },
                    "end": {
                      "line": 14,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 366,
                      "end": 402,
                      "loc": {
                        "start": {
                          "line": 13,
                          "column": 8
                        },
                        "end": {
                          "line": 13,
                          "column": 44
                        }
                      },
                      "argument": {
                        "type": "LogicalExpression",
                        "start": 373,
                        "end": 401,
                        "loc": {
                          "start": {
                            "line": 13,
                            "column": 15
                          },
                          "end": {
                            "line": 13,
                            "column": 43
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 373,
                          "end": 394,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 15
                            },
                            "end": {
                              "line": 13,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 373,
                            "end": 389,
                            "loc": {
                              "start": {
                                "line": 13,
                                "column": 15
                              },
                              "end": {
                                "line": 13,
                                "column": 31
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 373,
                              "end": 385,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 15
                                },
                                "end": {
                                  "line": 13,
                                  "column": 27
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 373,
                                "end": 377,
                                "loc": {
                                  "start": {
                                    "line": 13,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 13,
                                    "column": 19
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 378,
                                "end": 385,
                                "loc": {
                                  "start": {
                                    "line": 13,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 13,
                                    "column": 27
                                  }
                                },
                                "name": "parents"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 386,
                              "end": 389,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 28
                                },
                                "end": {
                                  "line": 13,
                                  "column": 31
                                }
                              },
                              "name": "get"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 390,
                              "end": 393,
                              "loc": {
                                "start": {
                                  "line": 13,
                                  "column": 32
                                },
                                "end": {
                                  "line": 13,
                                  "column": 35
                                }
                              },
                              "name": "obj"
                            }
                          ]
                        },
                        "operator": "||",
                        "right": {
                          "type": "Identifier",
                          "start": 398,
                          "end": 401,
                          "loc": {
                            "start": {
                              "line": 13,
                              "column": 40
                            },
                            "end": {
                              "line": 13,
                              "column": 43
                            }
                          },
                          "name": "obj"
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 414,
              "end": 477,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 4
                },
                "end": {
                  "line": 18,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 414,
                "end": 423,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 4
                  },
                  "end": {
                    "line": 16,
                    "column": 13
                  }
                },
                "name": "setParent"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 423,
                "end": 477,
                "loc": {
                  "start": {
                    "line": 16,
                    "column": 13
                  },
                  "end": {
                    "line": 18,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 424,
                    "end": 427,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 14
                      },
                      "end": {
                        "line": 16,
                        "column": 17
                      }
                    },
                    "name": "obj"
                  },
                  {
                    "type": "Identifier",
                    "start": 429,
                    "end": 432,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 19
                      },
                      "end": {
                        "line": 16,
                        "column": 22
                      }
                    },
                    "name": "par"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 434,
                  "end": 477,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 24
                    },
                    "end": {
                      "line": 18,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 444,
                      "end": 471,
                      "loc": {
                        "start": {
                          "line": 17,
                          "column": 8
                        },
                        "end": {
                          "line": 17,
                          "column": 35
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 444,
                        "end": 470,
                        "loc": {
                          "start": {
                            "line": 17,
                            "column": 8
                          },
                          "end": {
                            "line": 17,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 444,
                          "end": 460,
                          "loc": {
                            "start": {
                              "line": 17,
                              "column": 8
                            },
                            "end": {
                              "line": 17,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 444,
                            "end": 456,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 8
                              },
                              "end": {
                                "line": 17,
                                "column": 20
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 444,
                              "end": 448,
                              "loc": {
                                "start": {
                                  "line": 17,
                                  "column": 8
                                },
                                "end": {
                                  "line": 17,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 449,
                              "end": 456,
                              "loc": {
                                "start": {
                                  "line": 17,
                                  "column": 13
                                },
                                "end": {
                                  "line": 17,
                                  "column": 20
                                }
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 457,
                            "end": 460,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 21
                              },
                              "end": {
                                "line": 17,
                                "column": 24
                              }
                            },
                            "name": "set"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 461,
                            "end": 464,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 25
                              },
                              "end": {
                                "line": 17,
                                "column": 28
                              }
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 466,
                            "end": 469,
                            "loc": {
                              "start": {
                                "line": 17,
                                "column": 30
                              },
                              "end": {
                                "line": 17,
                                "column": 33
                              }
                            },
                            "name": "par"
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 483,
              "end": 685,
              "loc": {
                "start": {
                  "line": 20,
                  "column": 4
                },
                "end": {
                  "line": 27,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 483,
                "end": 490,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 4
                  },
                  "end": {
                    "line": 20,
                    "column": 11
                  }
                },
                "name": "getHead"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 490,
                "end": 685,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 11
                  },
                  "end": {
                    "line": 27,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 491,
                    "end": 494,
                    "loc": {
                      "start": {
                        "line": 20,
                        "column": 12
                      },
                      "end": {
                        "line": 20,
                        "column": 15
                      }
                    },
                    "name": "obj"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 496,
                  "end": 685,
                  "loc": {
                    "start": {
                      "line": 20,
                      "column": 17
                    },
                    "end": {
                      "line": 27,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 506,
                      "end": 536,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 8
                        },
                        "end": {
                          "line": 21,
                          "column": 38
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 510,
                          "end": 535,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 12
                            },
                            "end": {
                              "line": 21,
                              "column": 37
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 510,
                            "end": 513,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 12
                              },
                              "end": {
                                "line": 21,
                                "column": 15
                              }
                            },
                            "name": "par"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 516,
                            "end": 535,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 18
                              },
                              "end": {
                                "line": 21,
                                "column": 37
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 516,
                              "end": 530,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 18
                                },
                                "end": {
                                  "line": 21,
                                  "column": 32
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 516,
                                "end": 520,
                                "loc": {
                                  "start": {
                                    "line": 21,
                                    "column": 18
                                  },
                                  "end": {
                                    "line": 21,
                                    "column": 22
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 521,
                                "end": 530,
                                "loc": {
                                  "start": {
                                    "line": 21,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 21,
                                    "column": 32
                                  }
                                },
                                "name": "getParent"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 531,
                                "end": 534,
                                "loc": {
                                  "start": {
                                    "line": 21,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 21,
                                    "column": 36
                                  }
                                },
                                "name": "obj"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "IfStatement",
                      "start": 545,
                      "end": 585,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 8
                        },
                        "end": {
                          "line": 23,
                          "column": 23
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 549,
                        "end": 560,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 12
                          },
                          "end": {
                            "line": 22,
                            "column": 23
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 549,
                          "end": 552,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 12
                            },
                            "end": {
                              "line": 22,
                              "column": 15
                            }
                          },
                          "name": "par"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 557,
                          "end": 560,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 20
                            },
                            "end": {
                              "line": 22,
                              "column": 23
                            }
                          },
                          "name": "obj"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 574,
                        "end": 585,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 12
                          },
                          "end": {
                            "line": 23,
                            "column": 23
                          }
                        },
                        "argument": {
                          "type": "Identifier",
                          "start": 581,
                          "end": 584,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 19
                            },
                            "end": {
                              "line": 23,
                              "column": 22
                            }
                          },
                          "name": "obj"
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 594,
                      "end": 623,
                      "loc": {
                        "start": {
                          "line": 24,
                          "column": 8
                        },
                        "end": {
                          "line": 24,
                          "column": 37
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 598,
                          "end": 622,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 12
                            },
                            "end": {
                              "line": 24,
                              "column": 36
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 598,
                            "end": 602,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 12
                              },
                              "end": {
                                "line": 24,
                                "column": 16
                              }
                            },
                            "name": "head"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 605,
                            "end": 622,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 19
                              },
                              "end": {
                                "line": 24,
                                "column": 36
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 605,
                              "end": 617,
                              "loc": {
                                "start": {
                                  "line": 24,
                                  "column": 19
                                },
                                "end": {
                                  "line": 24,
                                  "column": 31
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 605,
                                "end": 609,
                                "loc": {
                                  "start": {
                                    "line": 24,
                                    "column": 19
                                  },
                                  "end": {
                                    "line": 24,
                                    "column": 23
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 610,
                                "end": 617,
                                "loc": {
                                  "start": {
                                    "line": 24,
                                    "column": 24
                                  },
                                  "end": {
                                    "line": 24,
                                    "column": 31
                                  }
                                },
                                "name": "getHead"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 618,
                                "end": 621,
                                "loc": {
                                  "start": {
                                    "line": 24,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 24,
                                    "column": 35
                                  }
                                },
                                "name": "par"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 632,
                      "end": 658,
                      "loc": {
                        "start": {
                          "line": 25,
                          "column": 8
                        },
                        "end": {
                          "line": 25,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 632,
                        "end": 657,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 8
                          },
                          "end": {
                            "line": 25,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 632,
                          "end": 646,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 8
                            },
                            "end": {
                              "line": 25,
                              "column": 22
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 632,
                            "end": 636,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 8
                              },
                              "end": {
                                "line": 25,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 637,
                            "end": 646,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 13
                              },
                              "end": {
                                "line": 25,
                                "column": 22
                              }
                            },
                            "name": "setParent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 647,
                            "end": 650,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 23
                              },
                              "end": {
                                "line": 25,
                                "column": 26
                              }
                            },
                            "name": "obj"
                          },
                          {
                            "type": "Identifier",
                            "start": 652,
                            "end": 656,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 28
                              },
                              "end": {
                                "line": 25,
                                "column": 32
                              }
                            },
                            "name": "head"
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 667,
                      "end": 679,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 8
                        },
                        "end": {
                          "line": 26,
                          "column": 20
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 674,
                        "end": 678,
                        "loc": {
                          "start": {
                            "line": 26,
                            "column": 15
                          },
                          "end": {
                            "line": 26,
                            "column": 19
                          }
                        },
                        "name": "head"
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 691,
              "end": 926,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 4
                },
                "end": {
                  "line": 36,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 691,
                "end": 696,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 4
                  },
                  "end": {
                    "line": 29,
                    "column": 9
                  }
                },
                "name": "merge"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 696,
                "end": 926,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 9
                  },
                  "end": {
                    "line": 36,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 697,
                    "end": 701,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 10
                      },
                      "end": {
                        "line": 29,
                        "column": 14
                      }
                    },
                    "name": "objA"
                  },
                  {
                    "type": "Identifier",
                    "start": 703,
                    "end": 707,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 16
                      },
                      "end": {
                        "line": 29,
                        "column": 20
                      }
                    },
                    "name": "objB"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 709,
                  "end": 926,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 22
                    },
                    "end": {
                      "line": 36,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 719,
                      "end": 745,
                      "loc": {
                        "start": {
                          "line": 30,
                          "column": 8
                        },
                        "end": {
                          "line": 30,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 719,
                        "end": 744,
                        "loc": {
                          "start": {
                            "line": 30,
                            "column": 8
                          },
                          "end": {
                            "line": 30,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 719,
                          "end": 723,
                          "loc": {
                            "start": {
                              "line": 30,
                              "column": 8
                            },
                            "end": {
                              "line": 30,
                              "column": 12
                            }
                          },
                          "name": "objA"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 726,
                          "end": 744,
                          "loc": {
                            "start": {
                              "line": 30,
                              "column": 15
                            },
                            "end": {
                              "line": 30,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 726,
                            "end": 738,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 15
                              },
                              "end": {
                                "line": 30,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 726,
                              "end": 730,
                              "loc": {
                                "start": {
                                  "line": 30,
                                  "column": 15
                                },
                                "end": {
                                  "line": 30,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 731,
                              "end": 738,
                              "loc": {
                                "start": {
                                  "line": 30,
                                  "column": 20
                                },
                                "end": {
                                  "line": 30,
                                  "column": 27
                                }
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 739,
                              "end": 743,
                              "loc": {
                                "start": {
                                  "line": 30,
                                  "column": 28
                                },
                                "end": {
                                  "line": 30,
                                  "column": 32
                                }
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 754,
                      "end": 780,
                      "loc": {
                        "start": {
                          "line": 31,
                          "column": 8
                        },
                        "end": {
                          "line": 31,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 754,
                        "end": 779,
                        "loc": {
                          "start": {
                            "line": 31,
                            "column": 8
                          },
                          "end": {
                            "line": 31,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 754,
                          "end": 758,
                          "loc": {
                            "start": {
                              "line": 31,
                              "column": 8
                            },
                            "end": {
                              "line": 31,
                              "column": 12
                            }
                          },
                          "name": "objB"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 761,
                          "end": 779,
                          "loc": {
                            "start": {
                              "line": 31,
                              "column": 15
                            },
                            "end": {
                              "line": 31,
                              "column": 33
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 761,
                            "end": 773,
                            "loc": {
                              "start": {
                                "line": 31,
                                "column": 15
                              },
                              "end": {
                                "line": 31,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 761,
                              "end": 765,
                              "loc": {
                                "start": {
                                  "line": 31,
                                  "column": 15
                                },
                                "end": {
                                  "line": 31,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 766,
                              "end": 773,
                              "loc": {
                                "start": {
                                  "line": 31,
                                  "column": 20
                                },
                                "end": {
                                  "line": 31,
                                  "column": 27
                                }
                              },
                              "name": "getHead"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 774,
                              "end": 778,
                              "loc": {
                                "start": {
                                  "line": 31,
                                  "column": 28
                                },
                                "end": {
                                  "line": 31,
                                  "column": 32
                                }
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "IfStatement",
                      "start": 789,
                      "end": 920,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 8
                        },
                        "end": {
                          "line": 35,
                          "column": 46
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 793,
                        "end": 812,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 12
                          },
                          "end": {
                            "line": 32,
                            "column": 31
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 793,
                          "end": 806,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 12
                            },
                            "end": {
                              "line": 32,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 793,
                            "end": 804,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 12
                              },
                              "end": {
                                "line": 32,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 793,
                              "end": 797,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 12
                                },
                                "end": {
                                  "line": 32,
                                  "column": 16
                                }
                              },
                              "name": "Math"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 798,
                              "end": 804,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 17
                                },
                                "end": {
                                  "line": 32,
                                  "column": 23
                                }
                              },
                              "name": "random"
                            },
                            "computed": false
                          },
                          "arguments": []
                        },
                        "operator": "<",
                        "right": {
                          "type": "Literal",
                          "start": 809,
                          "end": 812,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 28
                            },
                            "end": {
                              "line": 32,
                              "column": 31
                            }
                          },
                          "value": 0.5,
                          "rawValue": 0.5,
                          "raw": "0.5"
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 826,
                        "end": 860,
                        "loc": {
                          "start": {
                            "line": 33,
                            "column": 12
                          },
                          "end": {
                            "line": 33,
                            "column": 46
                          }
                        },
                        "argument": {
                          "type": "CallExpression",
                          "start": 833,
                          "end": 859,
                          "loc": {
                            "start": {
                              "line": 33,
                              "column": 19
                            },
                            "end": {
                              "line": 33,
                              "column": 45
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 833,
                            "end": 847,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 19
                              },
                              "end": {
                                "line": 33,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 833,
                              "end": 837,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 19
                                },
                                "end": {
                                  "line": 33,
                                  "column": 23
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 838,
                              "end": 847,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 24
                                },
                                "end": {
                                  "line": 33,
                                  "column": 33
                                }
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 848,
                              "end": 852,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 34
                                },
                                "end": {
                                  "line": 33,
                                  "column": 38
                                }
                              },
                              "name": "objA"
                            },
                            {
                              "type": "Identifier",
                              "start": 854,
                              "end": 858,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 40
                                },
                                "end": {
                                  "line": 33,
                                  "column": 44
                                }
                              },
                              "name": "objB"
                            }
                          ]
                        }
                      },
                      "alternate": {
                        "type": "ReturnStatement",
                        "start": 886,
                        "end": 920,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 12
                          },
                          "end": {
                            "line": 35,
                            "column": 46
                          }
                        },
                        "argument": {
                          "type": "CallExpression",
                          "start": 893,
                          "end": 919,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 19
                            },
                            "end": {
                              "line": 35,
                              "column": 45
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 893,
                            "end": 907,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 19
                              },
                              "end": {
                                "line": 35,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 893,
                              "end": 897,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 19
                                },
                                "end": {
                                  "line": 35,
                                  "column": 23
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 898,
                              "end": 907,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 24
                                },
                                "end": {
                                  "line": 35,
                                  "column": 33
                                }
                              },
                              "name": "setParent"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 908,
                              "end": 912,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 34
                                },
                                "end": {
                                  "line": 35,
                                  "column": 38
                                }
                              },
                              "name": "objB"
                            },
                            {
                              "type": "Identifier",
                              "start": 914,
                              "end": 918,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 40
                                },
                                "end": {
                                  "line": 35,
                                  "column": 44
                                }
                              },
                              "name": "objA"
                            }
                          ]
                        }
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 932,
              "end": 988,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 4
                },
                "end": {
                  "line": 40,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 932,
                "end": 942,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 4
                  },
                  "end": {
                    "line": 38,
                    "column": 14
                  }
                },
                "name": "getTouched"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 942,
                "end": 988,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 14
                  },
                  "end": {
                    "line": 40,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 945,
                  "end": 988,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 17
                    },
                    "end": {
                      "line": 40,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ReturnStatement",
                      "start": 955,
                      "end": 982,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 8
                        },
                        "end": {
                          "line": 39,
                          "column": 35
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 962,
                        "end": 981,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 15
                          },
                          "end": {
                            "line": 39,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 962,
                          "end": 979,
                          "loc": {
                            "start": {
                              "line": 39,
                              "column": 15
                            },
                            "end": {
                              "line": 39,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 962,
                            "end": 974,
                            "loc": {
                              "start": {
                                "line": 39,
                                "column": 15
                              },
                              "end": {
                                "line": 39,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 962,
                              "end": 966,
                              "loc": {
                                "start": {
                                  "line": 39,
                                  "column": 15
                                },
                                "end": {
                                  "line": 39,
                                  "column": 19
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 967,
                              "end": 974,
                              "loc": {
                                "start": {
                                  "line": 39,
                                  "column": 20
                                },
                                "end": {
                                  "line": 39,
                                  "column": 27
                                }
                              },
                              "name": "parents"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 975,
                            "end": 979,
                            "loc": {
                              "start": {
                                "line": 39,
                                "column": 28
                              },
                              "end": {
                                "line": 39,
                                "column": 32
                              }
                            },
                            "name": "keys"
                          },
                          "computed": false
                        },
                        "arguments": []
                      }
                    }
                  ]
                }
              }
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Disjoint Set Union ========================",
            "start": 188,
            "end": 256,
            "loc": {
              "start": {
                "line": 6,
                "column": 0
              },
              "end": {
                "line": 6,
                "column": 68
              }
            },
            "range": [
              188,
              256
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Constraints adder ========================",
            "start": 992,
            "end": 1059,
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 43,
                "column": 67
              }
            },
            "range": [
              992,
              1059
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Disjoint Set Union ========================",
          "start": 188,
          "end": 256,
          "loc": {
            "start": {
              "line": 6,
              "column": 0
            },
            "end": {
              "line": 6,
              "column": 68
            }
          },
          "range": [
            188,
            256
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 992,
          "end": 1059,
          "loc": {
            "start": {
              "line": 43,
              "column": 0
            },
            "end": {
              "line": 43,
              "column": 67
            }
          },
          "range": [
            992,
            1059
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 1060,
      "end": 5457,
      "loc": {
        "start": {
          "line": 44,
          "column": 0
        },
        "end": {
          "line": 149,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 1067,
        "end": 5457,
        "loc": {
          "start": {
            "line": 44,
            "column": 7
          },
          "end": {
            "line": 149,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 1073,
          "end": 1089,
          "loc": {
            "start": {
              "line": 44,
              "column": 13
            },
            "end": {
              "line": 44,
              "column": 29
            }
          },
          "name": "ConstraintsAdder",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 1090,
          "end": 5457,
          "loc": {
            "start": {
              "line": 44,
              "column": 30
            },
            "end": {
              "line": 149,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 1096,
              "end": 1678,
              "loc": {
                "start": {
                  "line": 45,
                  "column": 4
                },
                "end": {
                  "line": 60,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1096,
                "end": 1107,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 4
                  },
                  "end": {
                    "line": 45,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 1107,
                "end": 1678,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 15
                  },
                  "end": {
                    "line": 60,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1108,
                    "end": 1114,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 16
                      },
                      "end": {
                        "line": 45,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1116,
                  "end": 1678,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 24
                    },
                    "end": {
                      "line": 60,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1182,
                      "end": 1203,
                      "loc": {
                        "start": {
                          "line": 47,
                          "column": 8
                        },
                        "end": {
                          "line": 47,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1182,
                        "end": 1202,
                        "loc": {
                          "start": {
                            "line": 47,
                            "column": 8
                          },
                          "end": {
                            "line": 47,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1182,
                          "end": 1193,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 8
                            },
                            "end": {
                              "line": 47,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1182,
                            "end": 1186,
                            "loc": {
                              "start": {
                                "line": 47,
                                "column": 8
                              },
                              "end": {
                                "line": 47,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1187,
                            "end": 1193,
                            "loc": {
                              "start": {
                                "line": 47,
                                "column": 13
                              },
                              "end": {
                                "line": 47,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 1196,
                          "end": 1202,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 22
                            },
                            "end": {
                              "line": 47,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the sketch we are going to add constraints to",
                          "start": 1126,
                          "end": 1173,
                          "loc": {
                            "start": {
                              "line": 46,
                              "column": 8
                            },
                            "end": {
                              "line": 46,
                              "column": 55
                            }
                          },
                          "range": [
                            1126,
                            1173
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1212,
                          "end": 1266,
                          "loc": {
                            "start": {
                              "line": 48,
                              "column": 8
                            },
                            "end": {
                              "line": 48,
                              "column": 62
                            }
                          },
                          "range": [
                            1212,
                            1266
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1275,
                      "end": 1297,
                      "loc": {
                        "start": {
                          "line": 49,
                          "column": 8
                        },
                        "end": {
                          "line": 49,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1275,
                        "end": 1296,
                        "loc": {
                          "start": {
                            "line": 49,
                            "column": 8
                          },
                          "end": {
                            "line": 49,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1275,
                          "end": 1291,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 8
                            },
                            "end": {
                              "line": 49,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1275,
                            "end": 1279,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 8
                              },
                              "end": {
                                "line": 49,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1280,
                            "end": 1291,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 13
                              },
                              "end": {
                                "line": 49,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 1294,
                          "end": 1296,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 27
                            },
                            "end": {
                              "line": 49,
                              "column": 29
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "the list of constraints which really should be added",
                          "start": 1212,
                          "end": 1266,
                          "loc": {
                            "start": {
                              "line": 48,
                              "column": 8
                            },
                            "end": {
                              "line": 48,
                              "column": 62
                            }
                          },
                          "range": [
                            1212,
                            1266
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1307,
                          "end": 1365,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 66
                            }
                          },
                          "range": [
                            1307,
                            1365
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1374,
                      "end": 1404,
                      "loc": {
                        "start": {
                          "line": 52,
                          "column": 8
                        },
                        "end": {
                          "line": 52,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1374,
                        "end": 1403,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 8
                          },
                          "end": {
                            "line": 52,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1374,
                          "end": 1391,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 8
                            },
                            "end": {
                              "line": 52,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1374,
                            "end": 1378,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 8
                              },
                              "end": {
                                "line": 52,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1379,
                            "end": 1391,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 13
                              },
                              "end": {
                                "line": 52,
                                "column": 25
                              }
                            },
                            "name": "incidenceDsu"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1394,
                          "end": 1403,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 28
                            },
                            "end": {
                              "line": 52,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1398,
                            "end": 1401,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 32
                              },
                              "end": {
                                "line": 52,
                                "column": 35
                              }
                            },
                            "name": "DSU"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "dsu structures for incident and inc-tangent point groups",
                          "start": 1307,
                          "end": 1365,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 66
                            }
                          },
                          "range": [
                            1307,
                            1365
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1413,
                          "end": 1455,
                          "loc": {
                            "start": {
                              "line": 53,
                              "column": 8
                            },
                            "end": {
                              "line": 53,
                              "column": 50
                            }
                          },
                          "range": [
                            1413,
                            1455
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1464,
                          "end": 1503,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 47
                            }
                          },
                          "range": [
                            1464,
                            1503
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1512,
                      "end": 1543,
                      "loc": {
                        "start": {
                          "line": 55,
                          "column": 8
                        },
                        "end": {
                          "line": 55,
                          "column": 39
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1512,
                        "end": 1542,
                        "loc": {
                          "start": {
                            "line": 55,
                            "column": 8
                          },
                          "end": {
                            "line": 55,
                            "column": 38
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1512,
                          "end": 1530,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1512,
                            "end": 1516,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 8
                              },
                              "end": {
                                "line": 55,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1517,
                            "end": 1530,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 13
                              },
                              "end": {
                                "line": 55,
                                "column": 26
                              }
                            },
                            "name": "horizontalSet"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1533,
                          "end": 1542,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 29
                            },
                            "end": {
                              "line": 55,
                              "column": 38
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1537,
                            "end": 1540,
                            "loc": {
                              "start": {
                                "line": 55,
                                "column": 33
                              },
                              "end": {
                                "line": 55,
                                "column": 36
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "this.tangencyDsu = new DSU();    //TODO!",
                          "start": 1413,
                          "end": 1455,
                          "loc": {
                            "start": {
                              "line": 53,
                              "column": 8
                            },
                            "end": {
                              "line": 53,
                              "column": 50
                            }
                          },
                          "range": [
                            1413,
                            1455
                          ]
                        },
                        {
                          "type": "CommentLine",
                          "value": "sets of horizontal and vertical lines",
                          "start": 1464,
                          "end": 1503,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 47
                            }
                          },
                          "range": [
                            1464,
                            1503
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1552,
                      "end": 1581,
                      "loc": {
                        "start": {
                          "line": 56,
                          "column": 8
                        },
                        "end": {
                          "line": 56,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1552,
                        "end": 1580,
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 8
                          },
                          "end": {
                            "line": 56,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1552,
                          "end": 1568,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 8
                            },
                            "end": {
                              "line": 56,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1552,
                            "end": 1556,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 8
                              },
                              "end": {
                                "line": 56,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1557,
                            "end": 1568,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 13
                              },
                              "end": {
                                "line": 56,
                                "column": 24
                              }
                            },
                            "name": "verticalSet"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1571,
                          "end": 1580,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 27
                            },
                            "end": {
                              "line": 56,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1575,
                            "end": 1578,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 31
                              },
                              "end": {
                                "line": 56,
                                "column": 34
                              }
                            },
                            "name": "Set"
                          },
                          "arguments": []
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1591,
                          "end": 1651,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 68
                            }
                          },
                          "range": [
                            1591,
                            1651
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1660,
                      "end": 1672,
                      "loc": {
                        "start": {
                          "line": 59,
                          "column": 8
                        },
                        "end": {
                          "line": 59,
                          "column": 20
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1660,
                        "end": 1671,
                        "loc": {
                          "start": {
                            "line": 59,
                            "column": 8
                          },
                          "end": {
                            "line": 59,
                            "column": 19
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1660,
                          "end": 1669,
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 8
                            },
                            "end": {
                              "line": 59,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1660,
                            "end": 1664,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 8
                              },
                              "end": {
                                "line": 59,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1665,
                            "end": 1669,
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 13
                              },
                              "end": {
                                "line": 59,
                                "column": 17
                              }
                            },
                            "name": "init"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "preprocess all objects and constraints currently on sketch",
                          "start": 1591,
                          "end": 1651,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 68
                            }
                          },
                          "range": [
                            1591,
                            1651
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 1684,
              "end": 2253,
              "loc": {
                "start": {
                  "line": 62,
                  "column": 4
                },
                "end": {
                  "line": 73,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1684,
                "end": 1688,
                "loc": {
                  "start": {
                    "line": 62,
                    "column": 4
                  },
                  "end": {
                    "line": 62,
                    "column": 8
                  }
                },
                "name": "init"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 1688,
                "end": 2253,
                "loc": {
                  "start": {
                    "line": 62,
                    "column": 8
                  },
                  "end": {
                    "line": 73,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 1691,
                  "end": 2253,
                  "loc": {
                    "start": {
                      "line": 62,
                      "column": 11
                    },
                    "end": {
                      "line": 73,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 1753,
                      "end": 1808,
                      "loc": {
                        "start": {
                          "line": 64,
                          "column": 8
                        },
                        "end": {
                          "line": 64,
                          "column": 63
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1757,
                          "end": 1807,
                          "loc": {
                            "start": {
                              "line": 64,
                              "column": 12
                            },
                            "end": {
                              "line": 64,
                              "column": 62
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1757,
                            "end": 1768,
                            "loc": {
                              "start": {
                                "line": 64,
                                "column": 12
                              },
                              "end": {
                                "line": 64,
                                "column": 23
                              }
                            },
                            "name": "constraints",
                            "leadingComments": null
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 1771,
                            "end": 1807,
                            "loc": {
                              "start": {
                                "line": 64,
                                "column": 26
                              },
                              "end": {
                                "line": 64,
                                "column": 62
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1771,
                              "end": 1805,
                              "loc": {
                                "start": {
                                  "line": 64,
                                  "column": 26
                                },
                                "end": {
                                  "line": 64,
                                  "column": 60
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 1771,
                                "end": 1782,
                                "loc": {
                                  "start": {
                                    "line": 64,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 64,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1771,
                                  "end": 1775,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1776,
                                  "end": 1782,
                                  "loc": {
                                    "start": {
                                      "line": 64,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 64,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1783,
                                "end": 1805,
                                "loc": {
                                  "start": {
                                    "line": 64,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 64,
                                    "column": 60
                                  }
                                },
                                "name": "getConstraintsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          },
                          "leadingComments": null
                        }
                      ],
                      "kind": "var",
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "take all present constraints into account",
                          "start": 1701,
                          "end": 1744,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 8
                            },
                            "end": {
                              "line": 63,
                              "column": 51
                            }
                          },
                          "range": [
                            1701,
                            1744
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 1817,
                      "end": 2247,
                      "loc": {
                        "start": {
                          "line": 65,
                          "column": 8
                        },
                        "end": {
                          "line": 72,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 1822,
                        "end": 1832,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 13
                          },
                          "end": {
                            "line": 65,
                            "column": 23
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 1826,
                            "end": 1832,
                            "loc": {
                              "start": {
                                "line": 65,
                                "column": 17
                              },
                              "end": {
                                "line": 65,
                                "column": 23
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 1826,
                              "end": 1832,
                              "loc": {
                                "start": {
                                  "line": 65,
                                  "column": 17
                                },
                                "end": {
                                  "line": 65,
                                  "column": 23
                                }
                              },
                              "name": "constr"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 1836,
                        "end": 1847,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 27
                          },
                          "end": {
                            "line": 65,
                            "column": 38
                          }
                        },
                        "name": "constraints"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 1849,
                        "end": 2247,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 40
                          },
                          "end": {
                            "line": 72,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 1863,
                            "end": 1989,
                            "loc": {
                              "start": {
                                "line": 66,
                                "column": 12
                              },
                              "end": {
                                "line": 67,
                                "column": 72
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 1867,
                              "end": 1915,
                              "loc": {
                                "start": {
                                  "line": 66,
                                  "column": 16
                                },
                                "end": {
                                  "line": 66,
                                  "column": 64
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 1867,
                                "end": 1882,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1867,
                                  "end": 1873,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1874,
                                  "end": 1882,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 1887,
                                "end": 1915,
                                "loc": {
                                  "start": {
                                    "line": 66,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 64
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 1887,
                                  "end": 1912,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 61
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1887,
                                    "end": 1902,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 1887,
                                      "end": 1897,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1898,
                                      "end": 1902,
                                      "loc": {
                                        "start": {
                                          "line": 66,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 66,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1903,
                                    "end": 1912,
                                    "loc": {
                                      "start": {
                                        "line": 66,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 66,
                                        "column": 61
                                      }
                                    },
                                    "name": "INCIDENCE"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 1913,
                                  "end": 1914,
                                  "loc": {
                                    "start": {
                                      "line": 66,
                                      "column": 62
                                    },
                                    "end": {
                                      "line": 66,
                                      "column": 63
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 1933,
                              "end": 1989,
                              "loc": {
                                "start": {
                                  "line": 67,
                                  "column": 16
                                },
                                "end": {
                                  "line": 67,
                                  "column": 72
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 1933,
                                "end": 1988,
                                "loc": {
                                  "start": {
                                    "line": 67,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 67,
                                    "column": 71
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 1933,
                                  "end": 1956,
                                  "loc": {
                                    "start": {
                                      "line": 67,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 67,
                                      "column": 39
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 1933,
                                    "end": 1950,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 1933,
                                      "end": 1937,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1938,
                                      "end": 1950,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1951,
                                    "end": 1956,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 39
                                      }
                                    },
                                    "name": "merge"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 1957,
                                    "end": 1971,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 40
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 54
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1957,
                                      "end": 1968,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 40
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 51
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 1957,
                                        "end": 1963,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 46
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1964,
                                        "end": 1968,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 47
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 51
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 1969,
                                      "end": 1970,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 53
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  },
                                  {
                                    "type": "MemberExpression",
                                    "start": 1973,
                                    "end": 1987,
                                    "loc": {
                                      "start": {
                                        "line": 67,
                                        "column": 56
                                      },
                                      "end": {
                                        "line": 67,
                                        "column": 70
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 1973,
                                      "end": 1984,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 56
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 67
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 1973,
                                        "end": 1979,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 62
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 1980,
                                        "end": 1984,
                                        "loc": {
                                          "start": {
                                            "line": 67,
                                            "column": 63
                                          },
                                          "end": {
                                            "line": 67,
                                            "column": 67
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 1985,
                                      "end": 1986,
                                      "loc": {
                                        "start": {
                                          "line": 67,
                                          "column": 68
                                        },
                                        "end": {
                                          "line": 67,
                                          "column": 69
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 2002,
                            "end": 2111,
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 12
                              },
                              "end": {
                                "line": 69,
                                "column": 53
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2006,
                              "end": 2056,
                              "loc": {
                                "start": {
                                  "line": 68,
                                  "column": 16
                                },
                                "end": {
                                  "line": 68,
                                  "column": 66
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2006,
                                "end": 2021,
                                "loc": {
                                  "start": {
                                    "line": 68,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 68,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2006,
                                  "end": 2012,
                                  "loc": {
                                    "start": {
                                      "line": 68,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 68,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2013,
                                  "end": 2021,
                                  "loc": {
                                    "start": {
                                      "line": 68,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 68,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2026,
                                "end": 2056,
                                "loc": {
                                  "start": {
                                    "line": 68,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 68,
                                    "column": 66
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2026,
                                  "end": 2053,
                                  "loc": {
                                    "start": {
                                      "line": 68,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 68,
                                      "column": 63
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2026,
                                    "end": 2041,
                                    "loc": {
                                      "start": {
                                        "line": 68,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 68,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2026,
                                      "end": 2036,
                                      "loc": {
                                        "start": {
                                          "line": 68,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 68,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2037,
                                      "end": 2041,
                                      "loc": {
                                        "start": {
                                          "line": 68,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 68,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2042,
                                    "end": 2053,
                                    "loc": {
                                      "start": {
                                        "line": 68,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 68,
                                        "column": 63
                                      }
                                    },
                                    "name": "VERTICALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2054,
                                  "end": 2055,
                                  "loc": {
                                    "start": {
                                      "line": 68,
                                      "column": 64
                                    },
                                    "end": {
                                      "line": 68,
                                      "column": 65
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2074,
                              "end": 2111,
                              "loc": {
                                "start": {
                                  "line": 69,
                                  "column": 16
                                },
                                "end": {
                                  "line": 69,
                                  "column": 53
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2074,
                                "end": 2110,
                                "loc": {
                                  "start": {
                                    "line": 69,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 69,
                                    "column": 52
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2074,
                                  "end": 2094,
                                  "loc": {
                                    "start": {
                                      "line": 69,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 69,
                                      "column": 36
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2074,
                                    "end": 2090,
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 32
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2074,
                                      "end": 2078,
                                      "loc": {
                                        "start": {
                                          "line": 69,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 69,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2079,
                                      "end": 2090,
                                      "loc": {
                                        "start": {
                                          "line": 69,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 69,
                                          "column": 32
                                        }
                                      },
                                      "name": "verticalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2091,
                                    "end": 2094,
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 36
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2095,
                                    "end": 2109,
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2095,
                                      "end": 2106,
                                      "loc": {
                                        "start": {
                                          "line": 69,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 69,
                                          "column": 48
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2095,
                                        "end": 2101,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 37
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 43
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2102,
                                        "end": 2106,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 48
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2107,
                                      "end": 2108,
                                      "loc": {
                                        "start": {
                                          "line": 69,
                                          "column": 49
                                        },
                                        "end": {
                                          "line": 69,
                                          "column": 50
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ]
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "IfStatement",
                            "start": 2124,
                            "end": 2237,
                            "loc": {
                              "start": {
                                "line": 70,
                                "column": 12
                              },
                              "end": {
                                "line": 71,
                                "column": 55
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2128,
                              "end": 2180,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 16
                                },
                                "end": {
                                  "line": 70,
                                  "column": 68
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 2128,
                                "end": 2143,
                                "loc": {
                                  "start": {
                                    "line": 70,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 70,
                                    "column": 31
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2128,
                                  "end": 2134,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 22
                                    }
                                  },
                                  "name": "constr"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2135,
                                  "end": 2143,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 31
                                    }
                                  },
                                  "name": "typename"
                                },
                                "computed": false
                              },
                              "operator": "===",
                              "right": {
                                "type": "MemberExpression",
                                "start": 2148,
                                "end": 2180,
                                "loc": {
                                  "start": {
                                    "line": 70,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 70,
                                    "column": 68
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2148,
                                  "end": 2177,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 65
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2148,
                                    "end": 2163,
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 36
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 51
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2148,
                                      "end": 2158,
                                      "loc": {
                                        "start": {
                                          "line": 70,
                                          "column": 36
                                        },
                                        "end": {
                                          "line": 70,
                                          "column": 46
                                        }
                                      },
                                      "name": "Constraint"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2159,
                                      "end": 2163,
                                      "loc": {
                                        "start": {
                                          "line": 70,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 70,
                                          "column": 51
                                        }
                                      },
                                      "name": "Type"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2164,
                                    "end": 2177,
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 65
                                      }
                                    },
                                    "name": "HORIZONTALITY"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Literal",
                                  "start": 2178,
                                  "end": 2179,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 66
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 67
                                    }
                                  },
                                  "value": 0,
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "computed": true
                              }
                            },
                            "consequent": {
                              "type": "ExpressionStatement",
                              "start": 2198,
                              "end": 2237,
                              "loc": {
                                "start": {
                                  "line": 71,
                                  "column": 16
                                },
                                "end": {
                                  "line": 71,
                                  "column": 55
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 2198,
                                "end": 2236,
                                "loc": {
                                  "start": {
                                    "line": 71,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 71,
                                    "column": 54
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2198,
                                  "end": 2220,
                                  "loc": {
                                    "start": {
                                      "line": 71,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 71,
                                      "column": 38
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2198,
                                    "end": 2216,
                                    "loc": {
                                      "start": {
                                        "line": 71,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 71,
                                        "column": 34
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2198,
                                      "end": 2202,
                                      "loc": {
                                        "start": {
                                          "line": 71,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 71,
                                          "column": 20
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2203,
                                      "end": 2216,
                                      "loc": {
                                        "start": {
                                          "line": 71,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 71,
                                          "column": 34
                                        }
                                      },
                                      "name": "horizontalSet"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2217,
                                    "end": 2220,
                                    "loc": {
                                      "start": {
                                        "line": 71,
                                        "column": 35
                                      },
                                      "end": {
                                        "line": 71,
                                        "column": 38
                                      }
                                    },
                                    "name": "add"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2221,
                                    "end": 2235,
                                    "loc": {
                                      "start": {
                                        "line": 71,
                                        "column": 39
                                      },
                                      "end": {
                                        "line": 71,
                                        "column": 53
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 2221,
                                      "end": 2232,
                                      "loc": {
                                        "start": {
                                          "line": 71,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 71,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2221,
                                        "end": 2227,
                                        "loc": {
                                          "start": {
                                            "line": 71,
                                            "column": 39
                                          },
                                          "end": {
                                            "line": 71,
                                            "column": 45
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2228,
                                        "end": 2232,
                                        "loc": {
                                          "start": {
                                            "line": 71,
                                            "column": 46
                                          },
                                          "end": {
                                            "line": 71,
                                            "column": 50
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2233,
                                      "end": 2234,
                                      "loc": {
                                        "start": {
                                          "line": 71,
                                          "column": 51
                                        },
                                        "end": {
                                          "line": 71,
                                          "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": 2259,
                  "end": 2323,
                  "loc": {
                    "start": {
                      "line": 75,
                      "column": 4
                    },
                    "end": {
                      "line": 75,
                      "column": 68
                    }
                  },
                  "range": [
                    2259,
                    2323
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 2328,
              "end": 5115,
              "loc": {
                "start": {
                  "line": 76,
                  "column": 4
                },
                "end": {
                  "line": 137,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2328,
                "end": 2331,
                "loc": {
                  "start": {
                    "line": 76,
                    "column": 4
                  },
                  "end": {
                    "line": 76,
                    "column": 7
                  }
                },
                "name": "add",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2331,
                "end": 5115,
                "loc": {
                  "start": {
                    "line": 76,
                    "column": 7
                  },
                  "end": {
                    "line": 137,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2332,
                    "end": 2337,
                    "loc": {
                      "start": {
                        "line": 76,
                        "column": 8
                      },
                      "end": {
                        "line": 76,
                        "column": 13
                      }
                    },
                    "name": "types"
                  },
                  {
                    "type": "Identifier",
                    "start": 2339,
                    "end": 2343,
                    "loc": {
                      "start": {
                        "line": 76,
                        "column": 15
                      },
                      "end": {
                        "line": 76,
                        "column": 19
                      }
                    },
                    "name": "args"
                  },
                  {
                    "type": "Identifier",
                    "start": 2345,
                    "end": 2355,
                    "loc": {
                      "start": {
                        "line": 76,
                        "column": 21
                      },
                      "end": {
                        "line": 76,
                        "column": 31
                      }
                    },
                    "name": "attributes"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 2357,
                  "end": 5115,
                  "loc": {
                    "start": {
                      "line": 76,
                      "column": 33
                    },
                    "end": {
                      "line": 137,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 2367,
                      "end": 2383,
                      "loc": {
                        "start": {
                          "line": 77,
                          "column": 8
                        },
                        "end": {
                          "line": 77,
                          "column": 24
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 2371,
                          "end": 2382,
                          "loc": {
                            "start": {
                              "line": 77,
                              "column": 12
                            },
                            "end": {
                              "line": 77,
                              "column": 23
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 2371,
                            "end": 2374,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 12
                              },
                              "end": {
                                "line": 77,
                                "column": 15
                              }
                            },
                            "name": "add"
                          },
                          "init": {
                            "type": "Literal",
                            "start": 2377,
                            "end": 2382,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 18
                              },
                              "end": {
                                "line": 77,
                                "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": 2392,
                          "end": 2459,
                          "loc": {
                            "start": {
                              "line": 78,
                              "column": 8
                            },
                            "end": {
                              "line": 78,
                              "column": 75
                            }
                          },
                          "range": [
                            2392,
                            2459
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 2468,
                      "end": 4998,
                      "loc": {
                        "start": {
                          "line": 79,
                          "column": 8
                        },
                        "end": {
                          "line": 133,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 2472,
                        "end": 2507,
                        "loc": {
                          "start": {
                            "line": 79,
                            "column": 12
                          },
                          "end": {
                            "line": 79,
                            "column": 47
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 2472,
                          "end": 2477,
                          "loc": {
                            "start": {
                              "line": 79,
                              "column": 12
                            },
                            "end": {
                              "line": 79,
                              "column": 17
                            }
                          },
                          "name": "types",
                          "leadingComments": null
                        },
                        "operator": "===",
                        "right": {
                          "type": "MemberExpression",
                          "start": 2482,
                          "end": 2507,
                          "loc": {
                            "start": {
                              "line": 79,
                              "column": 22
                            },
                            "end": {
                              "line": 79,
                              "column": 47
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 2482,
                            "end": 2497,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 22
                              },
                              "end": {
                                "line": 79,
                                "column": 37
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2482,
                              "end": 2492,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 22
                                },
                                "end": {
                                  "line": 79,
                                  "column": 32
                                }
                              },
                              "name": "Constraint"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2493,
                              "end": 2497,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 33
                                },
                                "end": {
                                  "line": 79,
                                  "column": 37
                                }
                              },
                              "name": "Type"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2498,
                            "end": 2507,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 38
                              },
                              "end": {
                                "line": 79,
                                "column": 47
                              }
                            },
                            "name": "INCIDENCE"
                          },
                          "computed": false
                        },
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 2509,
                        "end": 2985,
                        "loc": {
                          "start": {
                            "line": 79,
                            "column": 49
                          },
                          "end": {
                            "line": 87,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 2794,
                            "end": 2975,
                            "loc": {
                              "start": {
                                "line": 83,
                                "column": 12
                              },
                              "end": {
                                "line": 86,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2798,
                              "end": 2871,
                              "loc": {
                                "start": {
                                  "line": 83,
                                  "column": 16
                                },
                                "end": {
                                  "line": 83,
                                  "column": 89
                                }
                              },
                              "left": {
                                "type": "CallExpression",
                                "start": 2798,
                                "end": 2832,
                                "loc": {
                                  "start": {
                                    "line": 83,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 83,
                                    "column": 50
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2798,
                                  "end": 2823,
                                  "loc": {
                                    "start": {
                                      "line": 83,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 83,
                                      "column": 41
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2798,
                                    "end": 2815,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 33
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2798,
                                      "end": 2802,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 20
                                        }
                                      },
                                      "leadingComments": null
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2803,
                                      "end": 2815,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 33
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false,
                                    "leadingComments": null
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2816,
                                    "end": 2823,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 34
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 41
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false,
                                  "leadingComments": null
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2824,
                                    "end": 2831,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 49
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2824,
                                      "end": 2828,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 42
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 46
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2829,
                                      "end": 2830,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 47
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 48
                                        }
                                      },
                                      "value": 0,
                                      "rawValue": 0,
                                      "raw": "0"
                                    },
                                    "computed": true
                                  }
                                ],
                                "leadingComments": null
                              },
                              "operator": "!==",
                              "right": {
                                "type": "CallExpression",
                                "start": 2837,
                                "end": 2871,
                                "loc": {
                                  "start": {
                                    "line": 83,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 83,
                                    "column": 89
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2837,
                                  "end": 2862,
                                  "loc": {
                                    "start": {
                                      "line": 83,
                                      "column": 55
                                    },
                                    "end": {
                                      "line": 83,
                                      "column": 80
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2837,
                                    "end": 2854,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 55
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 72
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 2837,
                                      "end": 2841,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 55
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 59
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2842,
                                      "end": 2854,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 60
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 72
                                        }
                                      },
                                      "name": "incidenceDsu"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2855,
                                    "end": 2862,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 73
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 80
                                      }
                                    },
                                    "name": "getHead"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "MemberExpression",
                                    "start": 2863,
                                    "end": 2870,
                                    "loc": {
                                      "start": {
                                        "line": 83,
                                        "column": 81
                                      },
                                      "end": {
                                        "line": 83,
                                        "column": 88
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2863,
                                      "end": 2867,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 81
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 85
                                        }
                                      },
                                      "name": "args"
                                    },
                                    "property": {
                                      "type": "Literal",
                                      "start": 2868,
                                      "end": 2869,
                                      "loc": {
                                        "start": {
                                          "line": 83,
                                          "column": 86
                                        },
                                        "end": {
                                          "line": 83,
                                          "column": 87
                                        }
                                      },
                                      "value": 1,
                                      "rawValue": 1,
                                      "raw": "1"
                                    },
                                    "computed": true
                                  }
                                ]
                              },
                              "leadingComments": null
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 2873,
                              "end": 2975,
                              "loc": {
                                "start": {
                                  "line": 83,
                                  "column": 91
                                },
                                "end": {
                                  "line": 86,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2891,
                                  "end": 2902,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 27
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 2891,
                                    "end": 2901,
                                    "loc": {
                                      "start": {
                                        "line": 84,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 84,
                                        "column": 26
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 2891,
                                      "end": 2894,
                                      "loc": {
                                        "start": {
                                          "line": 84,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 84,
                                          "column": 19
                                        }
                                      },
                                      "name": "add"
                                    },
                                    "right": {
                                      "type": "Literal",
                                      "start": 2897,
                                      "end": 2901,
                                      "loc": {
                                        "start": {
                                          "line": 84,
                                          "column": 22
                                        },
                                        "end": {
                                          "line": 84,
                                          "column": 26
                                        }
                                      },
                                      "value": true,
                                      "rawValue": true,
                                      "raw": "true"
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2919,
                                  "end": 2961,
                                  "loc": {
                                    "start": {
                                      "line": 85,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 85,
                                      "column": 58
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 2919,
                                    "end": 2960,
                                    "loc": {
                                      "start": {
                                        "line": 85,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 85,
                                        "column": 57
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 2919,
                                      "end": 2942,
                                      "loc": {
                                        "start": {
                                          "line": 85,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 85,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 2919,
                                        "end": 2936,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 33
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 2919,
                                          "end": 2923,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 20
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 2924,
                                          "end": 2936,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 21
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 33
                                            }
                                          },
                                          "name": "incidenceDsu"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2937,
                                        "end": 2942,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 34
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 39
                                          }
                                        },
                                        "name": "merge"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 2943,
                                        "end": 2950,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2943,
                                          "end": 2947,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 2948,
                                          "end": 2949,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      },
                                      {
                                        "type": "MemberExpression",
                                        "start": 2952,
                                        "end": 2959,
                                        "loc": {
                                          "start": {
                                            "line": 85,
                                            "column": 49
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 56
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2952,
                                          "end": 2956,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 49
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 53
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 2957,
                                          "end": 2958,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 54
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 55
                                            }
                                          },
                                          "value": 1,
                                          "rawValue": 1,
                                          "raw": "1"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "alternate": null,
                            "leadingComments": [
                              {
                                "type": "CommentLine",
                                "value": "TODO: implemented more complicated handling of incidence",
                                "start": 2523,
                                "end": 2581,
                                "loc": {
                                  "start": {
                                    "line": 80,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 80,
                                    "column": 70
                                  }
                                },
                                "range": [
                                  2523,
                                  2581
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "Incidence is an equivalence either on points or on lines / arcs, but not on both together.",
                                "start": 2594,
                                "end": 2686,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 104
                                  }
                                },
                                "range": [
                                  2594,
                                  2686
                                ]
                              },
                              {
                                "type": "CommentLine",
                                "value": "E.g.: if a point is incident to two lines, then these lines may be NOT incident.",
                                "start": 2699,
                                "end": 2781,
                                "loc": {
                                  "start": {
                                    "line": 82,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 82,
                                    "column": 94
                                  }
                                },
                                "range": [
                                  2699,
                                  2781
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      "alternate": {
                        "type": "IfStatement",
                        "start": 2999,
                        "end": 4998,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 13
                          },
                          "end": {
                            "line": 133,
                            "column": 9
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 3003,
                          "end": 3040,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 17
                            },
                            "end": {
                              "line": 88,
                              "column": 54
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 3003,
                            "end": 3008,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 17
                              },
                              "end": {
                                "line": 88,
                                "column": 22
                              }
                            },
                            "name": "types"
                          },
                          "operator": "===",
                          "right": {
                            "type": "MemberExpression",
                            "start": 3013,
                            "end": 3040,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 27
                              },
                              "end": {
                                "line": 88,
                                "column": 54
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3013,
                              "end": 3028,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 27
                                },
                                "end": {
                                  "line": 88,
                                  "column": 42
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 3013,
                                "end": 3023,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 37
                                  }
                                },
                                "name": "Constraint"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3024,
                                "end": 3028,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 42
                                  }
                                },
                                "name": "Type"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3029,
                              "end": 3040,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 43
                                },
                                "end": {
                                  "line": 88,
                                  "column": 54
                                }
                              },
                              "name": "VERTICALITY"
                            },
                            "computed": false
                          }
                        },
                        "consequent": {
                          "type": "BlockStatement",
                          "start": 3042,
                          "end": 3192,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 56
                            },
                            "end": {
                              "line": 93,
                              "column": 9
                            }
                          },
                          "body": [
                            {
                              "type": "IfStatement",
                              "start": 3056,
                              "end": 3182,
                              "loc": {
                                "start": {
                                  "line": 89,
                                  "column": 12
                                },
                                "end": {
                                  "line": 92,
                                  "column": 13
                                }
                              },
                              "test": {
                                "type": "UnaryExpression",
                                "start": 3060,
                                "end": 3090,
                                "loc": {
                                  "start": {
                                    "line": 89,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 89,
                                    "column": 46
                                  }
                                },
                                "operator": "!",
                                "prefix": true,
                                "argument": {
                                  "type": "CallExpression",
                                  "start": 3061,
                                  "end": 3090,
                                  "loc": {
                                    "start": {
                                      "line": 89,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 89,
                                      "column": 46
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 3061,
                                    "end": 3081,
                                    "loc": {
                                      "start": {
                                        "line": 89,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 89,
                                        "column": 37
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 3061,
                                      "end": 3077,
                                      "loc": {
                                        "start": {
                                          "line": 89,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 89,
                                          "column": 33
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 3061,
                                        "end": 3065,
                                        "loc": {
                                          "start": {
                                            "line": 89,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 89,
                                            "column": 21
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3066,
                                        "end": 3077,
                                        "loc": {
                                          "start": {
                                            "line": 89,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 89,
                                            "column": 33
                                          }
                                        },
                                        "name": "verticalSet"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3078,
                                      "end": 3081,
                                      "loc": {
                                        "start": {
                                          "line": 89,
                                          "column": 34
                                        },
                                        "end": {
                                          "line": 89,
                                          "column": 37
                                        }
                                      },
                                      "name": "has"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "MemberExpression",
                                      "start": 3082,
                                      "end": 3089,
                                      "loc": {
                                        "start": {
                                          "line": 89,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 89,
                                          "column": 45
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3082,
                                        "end": 3086,
                                        "loc": {
                                          "start": {
                                            "line": 89,
                                            "column": 38
                                          },
                                          "end": {
                                            "line": 89,
                                            "column": 42
                                          }
                                        },
                                        "name": "args"
                                      },
                                      "property": {
                                        "type": "Literal",
                                        "start": 3087,
                                        "end": 3088,
                                        "loc": {
                                          "start": {
                                            "line": 89,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 89,
                                            "column": 44
                                          }
                                        },
                                        "value": 0,
                                        "rawValue": 0,
                                        "raw": "0"
                                      },
                                      "computed": true
                                    }
                                  ]
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "start": 3092,
                                "end": 3182,
                                "loc": {
                                  "start": {
                                    "line": 89,
                                    "column": 48
                                  },
                                  "end": {
                                    "line": 92,
                                    "column": 13
                                  }
                                },
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3110,
                                    "end": 3121,
                                    "loc": {
                                      "start": {
                                        "line": 90,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 90,
                                        "column": 27
                                      }
                                    },
                                    "expression": {
                                      "type": "AssignmentExpression",
                                      "start": 3110,
                                      "end": 3120,
                                      "loc": {
                                        "start": {
                                          "line": 90,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 90,
                                          "column": 26
                                        }
                                      },
                                      "operator": "=",
                                      "left": {
                                        "type": "Identifier",
                                        "start": 3110,
                                        "end": 3113,
                                        "loc": {
                                          "start": {
                                            "line": 90,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 90,
                                            "column": 19
                                          }
                                        },
                                        "name": "add"
                                      },
                                      "right": {
                                        "type": "Literal",
                                        "start": 3116,
                                        "end": 3120,
                                        "loc": {
                                          "start": {
                                            "line": 90,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 90,
                                            "column": 26
                                          }
                                        },
                                        "value": true,
                                        "rawValue": true,
                                        "raw": "true"
                                      }
                                    }
                                  },
                                  {
                                    "type": "ExpressionStatement",
                                    "start": 3138,
                                    "end": 3168,
                                    "loc": {
                                      "start": {
                                        "line": 91,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 91,
                                        "column": 46
                                      }
                                    },
                                    "expression": {
                                      "type": "CallExpression",
                                      "start": 3138,
                                      "end": 3167,
                                      "loc": {
                                        "start": {
                                          "line": 91,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 91,
                                          "column": 45
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3138,
                                        "end": 3158,
                                        "loc": {
                                          "start": {
                                            "line": 91,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 91,
                                            "column": 36
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3138,
                                          "end": 3154,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 32
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3138,
                                            "end": 3142,
                                            "loc": {
                                              "start": {
                                                "line": 91,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 91,
                                                "column": 20
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3143,
                                            "end": 3154,
                                            "loc": {
                                              "start": {
                                                "line": 91,
                                                "column": 21
                                              },
                                              "end": {
                                                "line": 91,
                                                "column": 32
                                              }
                                            },
                                            "name": "verticalSet"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3155,
                                          "end": 3158,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 36
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "MemberExpression",
                                          "start": 3159,
                                          "end": 3166,
                                          "loc": {
                                            "start": {
                                              "line": 91,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 91,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 3159,
                                            "end": 3163,
                                            "loc": {
                                              "start": {
                                                "line": 91,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 91,
                                                "column": 41
                                              }
                                            },
                                            "name": "args"
                                          },
                                          "property": {
                                            "type": "Literal",
                                            "start": 3164,
                                            "end": 3165,
                                            "loc": {
                                              "start": {
                                                "line": 91,
                                                "column": 42
                                              },
                                              "end": {
                                                "line": 91,
                                                "column": 43
                                              }
                                            },
                                            "value": 0,
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "computed": true
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "alternate": null
                            }
                          ]
                        },
                        "alternate": {
                          "type": "IfStatement",
                          "start": 3206,
                          "end": 4998,
                          "loc": {
                            "start": {
                              "line": 94,
                              "column": 13
                            },
                            "end": {
                              "line": 133,
                              "column": 9
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 3210,
                            "end": 3249,
                            "loc": {
                              "start": {
                                "line": 94,
                                "column": 17
                              },
                              "end": {
                                "line": 94,
                                "column": 56
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 3210,
                              "end": 3215,
                              "loc": {
                                "start": {
                                  "line": 94,
                                  "column": 17
                                },
                                "end": {
                                  "line": 94,
                                  "column": 22
                                }
                              },
                              "name": "types"
                            },
                            "operator": "===",
                            "right": {
                              "type": "MemberExpression",
                              "start": 3220,
                              "end": 3249,
                              "loc": {
                                "start": {
                                  "line": 94,
                                  "column": 27
                                },
                                "end": {
                                  "line": 94,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3220,
                                "end": 3235,
                                "loc": {
                                  "start": {
                                    "line": 94,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 94,
                                    "column": 42
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 3220,
                                  "end": 3230,
                                  "loc": {
                                    "start": {
                                      "line": 94,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 94,
                                      "column": 37
                                    }
                                  },
                                  "name": "Constraint"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3231,
                                  "end": 3235,
                                  "loc": {
                                    "start": {
                                      "line": 94,
                                      "column": 38
                                    },
                                    "end": {
                                      "line": 94,
                                      "column": 42
                                    }
                                  },
                                  "name": "Type"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3236,
                                "end": 3249,
                                "loc": {
                                  "start": {
                                    "line": 94,
                                    "column": 43
                                  },
                                  "end": {
                                    "line": 94,
                                    "column": 56
                                  }
                                },
                                "name": "HORIZONTALITY"
                              },
                              "computed": false
                            }
                          },
                          "consequent": {
                            "type": "BlockStatement",
                            "start": 3251,
                            "end": 3405,
                            "loc": {
                              "start": {
                                "line": 94,
                                "column": 58
                              },
                              "end": {
                                "line": 99,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "IfStatement",
                                "start": 3265,
                                "end": 3395,
                                "loc": {
                                  "start": {
                                    "line": 95,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 98,
                                    "column": 13
                                  }
                                },
                                "test": {
                                  "type": "UnaryExpression",
                                  "start": 3269,
                                  "end": 3301,
                                  "loc": {
                                    "start": {
                                      "line": 95,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 95,
                                      "column": 48
                                    }
                                  },
                                  "operator": "!",
                                  "prefix": true,
                                  "argument": {
                                    "type": "CallExpression",
                                    "start": 3270,
                                    "end": 3301,
                                    "loc": {
                                      "start": {
                                        "line": 95,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 95,
                                        "column": 48
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3270,
                                      "end": 3292,
                                      "loc": {
                                        "start": {
                                          "line": 95,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 95,
                                          "column": 39
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 3270,
                                        "end": 3288,
                                        "loc": {
                                          "start": {
                                            "line": 95,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 95,
                                            "column": 35
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3270,
                                          "end": 3274,
                                          "loc": {
                                            "start": {
                                              "line": 95,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 95,
                                              "column": 21
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3275,
                                          "end": 3288,
                                          "loc": {
                                            "start": {
                                              "line": 95,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 95,
                                              "column": 35
                                            }
                                          },
                                          "name": "horizontalSet"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3289,
                                        "end": 3292,
                                        "loc": {
                                          "start": {
                                            "line": 95,
                                            "column": 36
                                          },
                                          "end": {
                                            "line": 95,
                                            "column": 39
                                          }
                                        },
                                        "name": "has"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3293,
                                        "end": 3300,
                                        "loc": {
                                          "start": {
                                            "line": 95,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 95,
                                            "column": 47
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3293,
                                          "end": 3297,
                                          "loc": {
                                            "start": {
                                              "line": 95,
                                              "column": 40
                                            },
                                            "end": {
                                              "line": 95,
                                              "column": 44
                                            }
                                          },
                                          "name": "args"
                                        },
                                        "property": {
                                          "type": "Literal",
                                          "start": 3298,
                                          "end": 3299,
                                          "loc": {
                                            "start": {
                                              "line": 95,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 95,
                                              "column": 46
                                            }
                                          },
                                          "value": 0,
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "computed": true
                                      }
                                    ]
                                  }
                                },
                                "consequent": {
                                  "type": "BlockStatement",
                                  "start": 3303,
                                  "end": 3395,
                                  "loc": {
                                    "start": {
                                      "line": 95,
                                      "column": 50
                                    },
                                    "end": {
                                      "line": 98,
                                      "column": 13
                                    }
                                  },
                                  "body": [
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3321,
                                      "end": 3332,
                                      "loc": {
                                        "start": {
                                          "line": 96,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 96,
                                          "column": 27
                                        }
                                      },
                                      "expression": {
                                        "type": "AssignmentExpression",
                                        "start": 3321,
                                        "end": 3331,
                                        "loc": {
                                          "start": {
                                            "line": 96,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 96,
                                            "column": 26
                                          }
                                        },
                                        "operator": "=",
                                        "left": {
                                          "type": "Identifier",
                                          "start": 3321,
                                          "end": 3324,
                                          "loc": {
                                            "start": {
                                              "line": 96,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 96,
                                              "column": 19
                                            }
                                          },
                                          "name": "add"
                                        },
                                        "right": {
                                          "type": "Literal",
                                          "start": 3327,
                                          "end": 3331,
                                          "loc": {
                                            "start": {
                                              "line": 96,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 96,
                                              "column": 26
                                            }
                                          },
                                          "value": true,
                                          "rawValue": true,
                                          "raw": "true"
                                        }
                                      }
                                    },
                                    {
                                      "type": "ExpressionStatement",
                                      "start": 3349,
                                      "end": 3381,
                                      "loc": {
                                        "start": {
                                          "line": 97,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 97,
                                          "column": 48
                                        }
                                      },
                                      "expression": {
                                        "type": "CallExpression",
                                        "start": 3349,
                                        "end": 3380,
                                        "loc": {
                                          "start": {
                                            "line": 97,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 97,
                                            "column": 47
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 3349,
                                          "end": 3371,
                                          "loc": {
                                            "start": {
                                              "line": 97,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 97,
                                              "column": 38
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 3349,
                                            "end": 3367,
                                            "loc": {
                                              "start": {
                                                "line": 97,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 97,
                                                "column": 34
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 3349,
                                              "end": 3353,
                                              "loc": {
                                                "start": {
                                                  "line": 97,
                                                  "column": 16
                                                },
                                                "end": {
                                                  "line": 97,
                                                  "column": 20
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3354,
                                              "end": 3367,
                                              "loc": {
                                                "start": {
                                                  "line": 97,
                                                  "column": 21
                                                },
                                                "end": {
                                                  "line": 97,
                                                  "column": 34
                                                }
                                              },
                                              "name": "horizontalSet"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3368,
                                            "end": 3371,
                                            "loc": {
                                              "start": {
                                                "line": 97,
                                                "column": 35
                                              },
                                              "end": {
                                                "line": 97,
                                                "column": 38
                                              }
                                            },
                                            "name": "add"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 3372,
                                            "end": 3379,
                                            "loc": {
                                              "start": {
                                                "line": 97,
                                                "column": 39
                                              },
                                              "end": {
                                                "line": 97,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3372,
                                              "end": 3376,
                                              "loc": {
                                                "start": {
                                                  "line": 97,
                                                  "column": 39
                                                },
                                                "end": {
                                                  "line": 97,
                                                  "column": 43
                                                }
                                              },
                                              "name": "args"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 3377,
                                              "end": 3378,
                                              "loc": {
                                                "start": {
                                                  "line": 97,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 97,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                },
                                "alternate": null
                              }
                            ]
                          },
                          "alternate": {
                            "type": "BlockStatement",
                            "start": 3419,
                            "end": 4998,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 13
                              },
                              "end": {
                                "line": 133,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "VariableDeclaration",
                                "start": 3433,
                                "end": 3491,
                                "loc": {
                                  "start": {
                                    "line": 101,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 101,
                                    "column": 70
                                  }
                                },
                                "declarations": [
                                  {
                                    "type": "VariableDeclarator",
                                    "start": 3437,
                                    "end": 3490,
                                    "loc": {
                                      "start": {
                                        "line": 101,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 101,
                                        "column": 69
                                      }
                                    },
                                    "id": {
                                      "type": "Identifier",
                                      "start": 3437,
                                      "end": 3451,
                                      "loc": {
                                        "start": {
                                          "line": 101,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 101,
                                          "column": 30
                                        }
                                      },
                                      "name": "allConstraints"
                                    },
                                    "init": {
                                      "type": "CallExpression",
                                      "start": 3454,
                                      "end": 3490,
                                      "loc": {
                                        "start": {
                                          "line": 101,
                                          "column": 33
                                        },
                                        "end": {
                                          "line": 101,
                                          "column": 69
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3454,
                                        "end": 3488,
                                        "loc": {
                                          "start": {
                                            "line": 101,
                                            "column": 33
                                          },
                                          "end": {
                                            "line": 101,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3454,
                                          "end": 3465,
                                          "loc": {
                                            "start": {
                                              "line": 101,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 101,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3454,
                                            "end": 3458,
                                            "loc": {
                                              "start": {
                                                "line": 101,
                                                "column": 33
                                              },
                                              "end": {
                                                "line": 101,
                                                "column": 37
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3459,
                                            "end": 3465,
                                            "loc": {
                                              "start": {
                                                "line": 101,
                                                "column": 38
                                              },
                                              "end": {
                                                "line": 101,
                                                "column": 44
                                              }
                                            },
                                            "name": "sketch"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3466,
                                          "end": 3488,
                                          "loc": {
                                            "start": {
                                              "line": 101,
                                              "column": 45
                                            },
                                            "end": {
                                              "line": 101,
                                              "column": 67
                                            }
                                          },
                                          "name": "getConstraintsOnSketch"
                                        },
                                        "computed": false
                                      },
                                      "arguments": []
                                    }
                                  }
                                ],
                                "kind": "var"
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3504,
                                "end": 3570,
                                "loc": {
                                  "start": {
                                    "line": 102,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 102,
                                    "column": 78
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3504,
                                  "end": 3569,
                                  "loc": {
                                    "start": {
                                      "line": 102,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 102,
                                      "column": 77
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3504,
                                    "end": 3518,
                                    "loc": {
                                      "start": {
                                        "line": 102,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 102,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3521,
                                    "end": 3569,
                                    "loc": {
                                      "start": {
                                        "line": 102,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 102,
                                        "column": 77
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3521,
                                      "end": 3539,
                                      "loc": {
                                        "start": {
                                          "line": 102,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 102,
                                          "column": 47
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3521,
                                        "end": 3535,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3536,
                                        "end": 3539,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 47
                                          }
                                        },
                                        "name": "map"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "ArrowFunctionExpression",
                                        "start": 3540,
                                        "end": 3568,
                                        "loc": {
                                          "start": {
                                            "line": 102,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 102,
                                            "column": 76
                                          }
                                        },
                                        "id": null,
                                        "generator": false,
                                        "expression": true,
                                        "async": false,
                                        "params": [
                                          {
                                            "type": "Identifier",
                                            "start": 3541,
                                            "end": 3547,
                                            "loc": {
                                              "start": {
                                                "line": 102,
                                                "column": 49
                                              },
                                              "end": {
                                                "line": 102,
                                                "column": 55
                                              }
                                            },
                                            "name": "constr"
                                          }
                                        ],
                                        "body": {
                                          "type": "CallExpression",
                                          "start": 3552,
                                          "end": 3568,
                                          "loc": {
                                            "start": {
                                              "line": 102,
                                              "column": 60
                                            },
                                            "end": {
                                              "line": 102,
                                              "column": 76
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 3552,
                                            "end": 3566,
                                            "loc": {
                                              "start": {
                                                "line": 102,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 102,
                                                "column": 74
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3552,
                                              "end": 3558,
                                              "loc": {
                                                "start": {
                                                  "line": 102,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 102,
                                                  "column": 66
                                                }
                                              },
                                              "name": "constr"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3559,
                                              "end": 3566,
                                              "loc": {
                                                "start": {
                                                  "line": 102,
                                                  "column": 67
                                                },
                                                "end": {
                                                  "line": 102,
                                                  "column": 74
                                                }
                                              },
                                              "name": "getData"
                                            },
                                            "computed": false
                                          },
                                          "arguments": []
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3583,
                                "end": 3640,
                                "loc": {
                                  "start": {
                                    "line": 103,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 103,
                                    "column": 69
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3583,
                                  "end": 3639,
                                  "loc": {
                                    "start": {
                                      "line": 103,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 103,
                                      "column": 68
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3583,
                                    "end": 3597,
                                    "loc": {
                                      "start": {
                                        "line": 103,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 103,
                                        "column": 26
                                      }
                                    },
                                    "name": "allConstraints"
                                  },
                                  "right": {
                                    "type": "CallExpression",
                                    "start": 3600,
                                    "end": 3639,
                                    "loc": {
                                      "start": {
                                        "line": 103,
                                        "column": 29
                                      },
                                      "end": {
                                        "line": 103,
                                        "column": 68
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3600,
                                      "end": 3621,
                                      "loc": {
                                        "start": {
                                          "line": 103,
                                          "column": 29
                                        },
                                        "end": {
                                          "line": 103,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3600,
                                        "end": 3614,
                                        "loc": {
                                          "start": {
                                            "line": 103,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 103,
                                            "column": 43
                                          }
                                        },
                                        "name": "allConstraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3615,
                                        "end": 3621,
                                        "loc": {
                                          "start": {
                                            "line": 103,
                                            "column": 44
                                          },
                                          "end": {
                                            "line": 103,
                                            "column": 50
                                          }
                                        },
                                        "name": "concat"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 3622,
                                        "end": 3638,
                                        "loc": {
                                          "start": {
                                            "line": 103,
                                            "column": 51
                                          },
                                          "end": {
                                            "line": 103,
                                            "column": 67
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 3622,
                                          "end": 3626,
                                          "loc": {
                                            "start": {
                                              "line": 103,
                                              "column": 51
                                            },
                                            "end": {
                                              "line": 103,
                                              "column": 55
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3627,
                                          "end": 3638,
                                          "loc": {
                                            "start": {
                                              "line": 103,
                                              "column": 56
                                            },
                                            "end": {
                                              "line": 103,
                                              "column": 67
                                            }
                                          },
                                          "name": "constraints"
                                        },
                                        "computed": false
                                      }
                                    ]
                                  }
                                },
                                "trailingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3653,
                                    "end": 3686,
                                    "loc": {
                                      "start": {
                                        "line": 104,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 104,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3653,
                                      3686
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 3699,
                                "end": 4988,
                                "loc": {
                                  "start": {
                                    "line": 105,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 132,
                                    "column": 15
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 3699,
                                  "end": 4987,
                                  "loc": {
                                    "start": {
                                      "line": 105,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 132,
                                      "column": 14
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "Identifier",
                                    "start": 3699,
                                    "end": 3702,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 15
                                      }
                                    },
                                    "name": "add",
                                    "leadingComments": null
                                  },
                                  "right": {
                                    "type": "UnaryExpression",
                                    "start": 3705,
                                    "end": 4987,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 132,
                                        "column": 14
                                      }
                                    },
                                    "operator": "!",
                                    "prefix": true,
                                    "argument": {
                                      "type": "CallExpression",
                                      "start": 3706,
                                      "end": 4987,
                                      "loc": {
                                        "start": {
                                          "line": 105,
                                          "column": 19
                                        },
                                        "end": {
                                          "line": 132,
                                          "column": 14
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 3706,
                                        "end": 3725,
                                        "loc": {
                                          "start": {
                                            "line": 105,
                                            "column": 19
                                          },
                                          "end": {
                                            "line": 105,
                                            "column": 38
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3706,
                                          "end": 3720,
                                          "loc": {
                                            "start": {
                                              "line": 105,
                                              "column": 19
                                            },
                                            "end": {
                                              "line": 105,
                                              "column": 33
                                            }
                                          },
                                          "name": "allConstraints"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3721,
                                          "end": 3725,
                                          "loc": {
                                            "start": {
                                              "line": 105,
                                              "column": 34
                                            },
                                            "end": {
                                              "line": 105,
                                              "column": 38
                                            }
                                          },
                                          "name": "some"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "ArrowFunctionExpression",
                                          "start": 3726,
                                          "end": 4986,
                                          "loc": {
                                            "start": {
                                              "line": 105,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 132,
                                              "column": 13
                                            }
                                          },
                                          "id": null,
                                          "generator": false,
                                          "expression": false,
                                          "async": false,
                                          "params": [
                                            {
                                              "type": "Identifier",
                                              "start": 3727,
                                              "end": 3733,
                                              "loc": {
                                                "start": {
                                                  "line": 105,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 105,
                                                  "column": 46
                                                }
                                              },
                                              "name": "constr"
                                            }
                                          ],
                                          "body": {
                                            "type": "BlockStatement",
                                            "start": 3738,
                                            "end": 4986,
                                            "loc": {
                                              "start": {
                                                "line": 105,
                                                "column": 51
                                              },
                                              "end": {
                                                "line": 132,
                                                "column": 13
                                              }
                                            },
                                            "body": [
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 3756,
                                                "end": 3823,
                                                "loc": {
                                                  "start": {
                                                    "line": 106,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 106,
                                                    "column": 83
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3760,
                                                    "end": 3778,
                                                    "loc": {
                                                      "start": {
                                                        "line": 106,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 106,
                                                        "column": 38
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3760,
                                                      "end": 3766,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3769,
                                                      "end": 3778,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 29
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 38
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3769,
                                                        "end": 3775,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 29
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 35
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3776,
                                                        "end": 3777,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 36
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 37
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3780,
                                                    "end": 3797,
                                                    "loc": {
                                                      "start": {
                                                        "line": 106,
                                                        "column": 40
                                                      },
                                                      "end": {
                                                        "line": 106,
                                                        "column": 57
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3780,
                                                      "end": 3785,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 45
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3788,
                                                      "end": 3797,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 48
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 57
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3788,
                                                        "end": 3794,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 48
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 54
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3795,
                                                        "end": 3796,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 55
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 56
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    }
                                                  },
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 3799,
                                                    "end": 3822,
                                                    "loc": {
                                                      "start": {
                                                        "line": 106,
                                                        "column": 59
                                                      },
                                                      "end": {
                                                        "line": 106,
                                                        "column": 82
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 3799,
                                                      "end": 3810,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 59
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 70
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "init": {
                                                      "type": "MemberExpression",
                                                      "start": 3813,
                                                      "end": 3822,
                                                      "loc": {
                                                        "start": {
                                                          "line": 106,
                                                          "column": 73
                                                        },
                                                        "end": {
                                                          "line": 106,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 3813,
                                                        "end": 3819,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 73
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 79
                                                          }
                                                        },
                                                        "name": "constr"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 3820,
                                                        "end": 3821,
                                                        "loc": {
                                                          "start": {
                                                            "line": 106,
                                                            "column": 80
                                                          },
                                                          "end": {
                                                            "line": 106,
                                                            "column": 81
                                                          }
                                                        },
                                                        "value": 2,
                                                        "rawValue": 2,
                                                        "raw": "2"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 3840,
                                                "end": 3901,
                                                "loc": {
                                                  "start": {
                                                    "line": 107,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 108,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 3844,
                                                  "end": 3866,
                                                  "loc": {
                                                    "start": {
                                                      "line": 107,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 107,
                                                      "column": 42
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 3844,
                                                    "end": 3853,
                                                    "loc": {
                                                      "start": {
                                                        "line": 107,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 107,
                                                        "column": 29
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3844,
                                                      "end": 3850,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 26
                                                        }
                                                      },
                                                      "name": "types2"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 3851,
                                                      "end": 3852,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 27
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 28
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 3858,
                                                    "end": 3866,
                                                    "loc": {
                                                      "start": {
                                                        "line": 107,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 107,
                                                        "column": 42
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3858,
                                                      "end": 3863,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 34
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 39
                                                        }
                                                      },
                                                      "name": "types"
                                                    },
                                                    "property": {
                                                      "type": "Literal",
                                                      "start": 3864,
                                                      "end": 3865,
                                                      "loc": {
                                                        "start": {
                                                          "line": 107,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 107,
                                                          "column": 41
                                                        }
                                                      },
                                                      "value": 0,
                                                      "rawValue": 0,
                                                      "raw": "0"
                                                    },
                                                    "computed": true
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 3888,
                                                  "end": 3901,
                                                  "loc": {
                                                    "start": {
                                                      "line": 108,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 108,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 3895,
                                                    "end": 3900,
                                                    "loc": {
                                                      "start": {
                                                        "line": 108,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 108,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 3918,
                                                "end": 3984,
                                                "loc": {
                                                  "start": {
                                                    "line": 109,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 110,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "BinaryExpression",
                                                  "start": 3922,
                                                  "end": 3949,
                                                  "loc": {
                                                    "start": {
                                                      "line": 109,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 109,
                                                      "column": 47
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "MemberExpression",
                                                    "start": 3922,
                                                    "end": 3934,
                                                    "loc": {
                                                      "start": {
                                                        "line": 109,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 109,
                                                        "column": 32
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3922,
                                                      "end": 3927,
                                                      "loc": {
                                                        "start": {
                                                          "line": 109,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 109,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3928,
                                                      "end": 3934,
                                                      "loc": {
                                                        "start": {
                                                          "line": 109,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 109,
                                                          "column": 32
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  },
                                                  "operator": "!=",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 3938,
                                                    "end": 3949,
                                                    "loc": {
                                                      "start": {
                                                        "line": 109,
                                                        "column": 36
                                                      },
                                                      "end": {
                                                        "line": 109,
                                                        "column": 47
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 3938,
                                                      "end": 3942,
                                                      "loc": {
                                                        "start": {
                                                          "line": 109,
                                                          "column": 36
                                                        },
                                                        "end": {
                                                          "line": 109,
                                                          "column": 40
                                                        }
                                                      },
                                                      "name": "args"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3943,
                                                      "end": 3949,
                                                      "loc": {
                                                        "start": {
                                                          "line": 109,
                                                          "column": 41
                                                        },
                                                        "end": {
                                                          "line": 109,
                                                          "column": 47
                                                        }
                                                      },
                                                      "name": "length"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 3971,
                                                  "end": 3984,
                                                  "loc": {
                                                    "start": {
                                                      "line": 110,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 110,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 3978,
                                                    "end": 3983,
                                                    "loc": {
                                                      "start": {
                                                        "line": 110,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 110,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4001,
                                                "end": 4128,
                                                "loc": {
                                                  "start": {
                                                    "line": 111,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 112,
                                                    "column": 33
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 4005,
                                                  "end": 4093,
                                                  "loc": {
                                                    "start": {
                                                      "line": 111,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 111,
                                                      "column": 108
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 4005,
                                                    "end": 4067,
                                                    "loc": {
                                                      "start": {
                                                        "line": 111,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 111,
                                                        "column": 82
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "LogicalExpression",
                                                      "start": 4005,
                                                      "end": 4042,
                                                      "loc": {
                                                        "start": {
                                                          "line": 111,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 111,
                                                          "column": 57
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 4005,
                                                        "end": 4021,
                                                        "loc": {
                                                          "start": {
                                                            "line": 111,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 111,
                                                            "column": 36
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4005,
                                                          "end": 4015,
                                                          "loc": {
                                                            "start": {
                                                              "line": 111,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 111,
                                                              "column": 30
                                                            }
                                                          },
                                                          "name": "attributes"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4016,
                                                          "end": 4021,
                                                          "loc": {
                                                            "start": {
                                                              "line": 111,
                                                              "column": 31
                                                            },
                                                            "end": {
                                                              "line": 111,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      },
                                                      "operator": "||",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 4025,
                                                        "end": 4042,
                                                        "loc": {
                                                          "start": {
                                                            "line": 111,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 111,
                                                            "column": 57
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4025,
                                                          "end": 4036,
                                                          "loc": {
                                                            "start": {
                                                              "line": 111,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 111,
                                                              "column": 51
                                                            }
                                                          },
                                                          "name": "attributes2"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4037,
                                                          "end": 4042,
                                                          "loc": {
                                                            "start": {
                                                              "line": 111,
                                                              "column": 52
                                                            },
                                                            "end": {
                                                              "line": 111,
                                                              "column": 57
                                                            }
                                                          },
                                                          "name": "value"
                                                        },
                                                        "computed": false
                                                      }
                                                    },
                                                    "operator": "||",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 4046,
                                                      "end": 4067,
                                                      "loc": {
                                                        "start": {
                                                          "line": 111,
                                                          "column": 61
                                                        },
                                                        "end": {
                                                          "line": 111,
                                                          "column": 82
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4046,
                                                        "end": 4056,
                                                        "loc": {
                                                          "start": {
                                                            "line": 111,
                                                            "column": 61
                                                          },
                                                          "end": {
                                                            "line": 111,
                                                            "column": 71
                                                          }
                                                        },
                                                        "name": "attributes"
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 4057,
                                                        "end": 4067,
                                                        "loc": {
                                                          "start": {
                                                            "line": 111,
                                                            "column": 72
                                                          },
                                                          "end": {
                                                            "line": 111,
                                                            "column": 82
                                                          }
                                                        },
                                                        "name": "expression"
                                                      },
                                                      "computed": false
                                                    }
                                                  },
                                                  "operator": "||",
                                                  "right": {
                                                    "type": "MemberExpression",
                                                    "start": 4071,
                                                    "end": 4093,
                                                    "loc": {
                                                      "start": {
                                                        "line": 111,
                                                        "column": 86
                                                      },
                                                      "end": {
                                                        "line": 111,
                                                        "column": 108
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4071,
                                                      "end": 4082,
                                                      "loc": {
                                                        "start": {
                                                          "line": 111,
                                                          "column": 86
                                                        },
                                                        "end": {
                                                          "line": 111,
                                                          "column": 97
                                                        }
                                                      },
                                                      "name": "attributes2"
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4083,
                                                      "end": 4093,
                                                      "loc": {
                                                        "start": {
                                                          "line": 111,
                                                          "column": 98
                                                        },
                                                        "end": {
                                                          "line": 111,
                                                          "column": 108
                                                        }
                                                      },
                                                      "name": "expression"
                                                    },
                                                    "computed": false
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4115,
                                                  "end": 4128,
                                                  "loc": {
                                                    "start": {
                                                      "line": 112,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 112,
                                                      "column": 33
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4122,
                                                    "end": 4127,
                                                    "loc": {
                                                      "start": {
                                                        "line": 112,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 112,
                                                        "column": 32
                                                      }
                                                    },
                                                    "value": false,
                                                    "rawValue": false,
                                                    "raw": "false"
                                                  },
                                                  "trailingComments": null
                                                },
                                                "alternate": null,
                                                "trailingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4129,
                                                    "end": 4160,
                                                    "loc": {
                                                      "start": {
                                                        "line": 112,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 112,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4129,
                                                      4160
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4178,
                                                "end": 4260,
                                                "loc": {
                                                  "start": {
                                                    "line": 114,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 115,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "CallExpression",
                                                  "start": 4182,
                                                  "end": 4226,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 64
                                                    }
                                                  },
                                                  "callee": {
                                                    "type": "MemberExpression",
                                                    "start": 4182,
                                                    "end": 4193,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 31
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "Identifier",
                                                      "start": 4182,
                                                      "end": 4187,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 25
                                                        }
                                                      },
                                                      "name": "args2",
                                                      "leadingComments": null
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 4188,
                                                      "end": 4193,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 26
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 31
                                                        }
                                                      },
                                                      "name": "every"
                                                    },
                                                    "computed": false,
                                                    "leadingComments": null
                                                  },
                                                  "arguments": [
                                                    {
                                                      "type": "ArrowFunctionExpression",
                                                      "start": 4194,
                                                      "end": 4225,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 63
                                                        }
                                                      },
                                                      "id": null,
                                                      "generator": false,
                                                      "expression": true,
                                                      "async": false,
                                                      "params": [
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4195,
                                                          "end": 4198,
                                                          "loc": {
                                                            "start": {
                                                              "line": 114,
                                                              "column": 33
                                                            },
                                                            "end": {
                                                              "line": 114,
                                                              "column": 36
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        {
                                                          "type": "Identifier",
                                                          "start": 4200,
                                                          "end": 4203,
                                                          "loc": {
                                                            "start": {
                                                              "line": 114,
                                                              "column": 38
                                                            },
                                                            "end": {
                                                              "line": 114,
                                                              "column": 41
                                                            }
                                                          },
                                                          "name": "idx"
                                                        }
                                                      ],
                                                      "body": {
                                                        "type": "BinaryExpression",
                                                        "start": 4208,
                                                        "end": 4225,
                                                        "loc": {
                                                          "start": {
                                                            "line": 114,
                                                            "column": 46
                                                          },
                                                          "end": {
                                                            "line": 114,
                                                            "column": 63
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "Identifier",
                                                          "start": 4208,
                                                          "end": 4211,
                                                          "loc": {
                                                            "start": {
                                                              "line": 114,
                                                              "column": 46
                                                            },
                                                            "end": {
                                                              "line": 114,
                                                              "column": 49
                                                            }
                                                          },
                                                          "name": "obj"
                                                        },
                                                        "operator": "===",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 4216,
                                                          "end": 4225,
                                                          "loc": {
                                                            "start": {
                                                              "line": 114,
                                                              "column": 54
                                                            },
                                                            "end": {
                                                              "line": 114,
                                                              "column": 63
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 4216,
                                                            "end": 4220,
                                                            "loc": {
                                                              "start": {
                                                                "line": 114,
                                                                "column": 54
                                                              },
                                                              "end": {
                                                                "line": 114,
                                                                "column": 58
                                                              }
                                                            },
                                                            "name": "args"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 4221,
                                                            "end": 4224,
                                                            "loc": {
                                                              "start": {
                                                                "line": 114,
                                                                "column": 59
                                                              },
                                                              "end": {
                                                                "line": 114,
                                                                "column": 62
                                                              }
                                                            },
                                                            "name": "idx"
                                                          },
                                                          "computed": true
                                                        }
                                                      }
                                                    }
                                                  ],
                                                  "leadingComments": null
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4248,
                                                  "end": 4260,
                                                  "loc": {
                                                    "start": {
                                                      "line": 115,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 115,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4255,
                                                    "end": 4259,
                                                    "loc": {
                                                      "start": {
                                                        "line": 115,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 115,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null,
                                                "leadingComments": [
                                                  {
                                                    "type": "CommentLine",
                                                    "value": "ignore parametric constraints",
                                                    "start": 4129,
                                                    "end": 4160,
                                                    "loc": {
                                                      "start": {
                                                        "line": 112,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 112,
                                                        "column": 65
                                                      }
                                                    },
                                                    "range": [
                                                      4129,
                                                      4160
                                                    ]
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "VariableDeclaration",
                                                "start": 4278,
                                                "end": 4796,
                                                "loc": {
                                                  "start": {
                                                    "line": 117,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 127,
                                                    "column": 37
                                                  }
                                                },
                                                "declarations": [
                                                  {
                                                    "type": "VariableDeclarator",
                                                    "start": 4282,
                                                    "end": 4795,
                                                    "loc": {
                                                      "start": {
                                                        "line": 117,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 127,
                                                        "column": 36
                                                      }
                                                    },
                                                    "id": {
                                                      "type": "Identifier",
                                                      "start": 4282,
                                                      "end": 4299,
                                                      "loc": {
                                                        "start": {
                                                          "line": 117,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 117,
                                                          "column": 37
                                                        }
                                                      },
                                                      "name": "binaryCommutative"
                                                    },
                                                    "init": {
                                                      "type": "CallExpression",
                                                      "start": 4302,
                                                      "end": 4795,
                                                      "loc": {
                                                        "start": {
                                                          "line": 117,
                                                          "column": 40
                                                        },
                                                        "end": {
                                                          "line": 127,
                                                          "column": 36
                                                        }
                                                      },
                                                      "callee": {
                                                        "type": "MemberExpression",
                                                        "start": 4302,
                                                        "end": 4780,
                                                        "loc": {
                                                          "start": {
                                                            "line": 117,
                                                            "column": 40
                                                          },
                                                          "end": {
                                                            "line": 127,
                                                            "column": 21
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "ArrayExpression",
                                                          "start": 4302,
                                                          "end": 4776,
                                                          "loc": {
                                                            "start": {
                                                              "line": 117,
                                                              "column": 40
                                                            },
                                                            "end": {
                                                              "line": 127,
                                                              "column": 17
                                                            }
                                                          },
                                                          "elements": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4324,
                                                              "end": 4349,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 118,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 118,
                                                                  "column": 45
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4324,
                                                                "end": 4339,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 118,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 118,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4324,
                                                                  "end": 4334,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 118,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 118,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4335,
                                                                  "end": 4339,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 118,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 118,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4340,
                                                                "end": 4349,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 118,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 118,
                                                                    "column": 45
                                                                  }
                                                                },
                                                                "name": "INCIDENCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4371,
                                                              "end": 4395,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 119,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 119,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4371,
                                                                "end": 4386,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 119,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 119,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4371,
                                                                  "end": 4381,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 119,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 119,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4382,
                                                                  "end": 4386,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 119,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 119,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4387,
                                                                "end": 4395,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 119,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 119,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "DISTANCE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4417,
                                                              "end": 4438,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 120,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 120,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4417,
                                                                "end": 4432,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 120,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 120,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4417,
                                                                  "end": 4427,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 120,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 120,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4428,
                                                                  "end": 4432,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 120,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 120,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4433,
                                                                "end": 4438,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 120,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 120,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "ANGLE"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4460,
                                                              "end": 4484,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 121,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 121,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4460,
                                                                "end": 4475,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 121,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 121,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4460,
                                                                  "end": 4470,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 121,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 121,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4471,
                                                                  "end": 4475,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 121,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 121,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4476,
                                                                "end": 4484,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 121,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 121,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "TANGENCY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4506,
                                                              "end": 4538,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 122,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 122,
                                                                  "column": 52
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4506,
                                                                "end": 4521,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 122,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 122,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4506,
                                                                  "end": 4516,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 122,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 122,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4517,
                                                                  "end": 4521,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 122,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 122,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4522,
                                                                "end": 4538,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 122,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 122,
                                                                    "column": 52
                                                                  }
                                                                },
                                                                "name": "PERPENDICULARITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4560,
                                                              "end": 4587,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 123,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 123,
                                                                  "column": 47
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4560,
                                                                "end": 4575,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 123,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 123,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4560,
                                                                  "end": 4570,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 123,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 123,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4571,
                                                                  "end": 4575,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 123,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 123,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4576,
                                                                "end": 4587,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 123,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 123,
                                                                    "column": 47
                                                                  }
                                                                },
                                                                "name": "PARALLELITY"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4609,
                                                              "end": 4635,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 124,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 124,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4609,
                                                                "end": 4624,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 124,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 124,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4609,
                                                                  "end": 4619,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 124,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 124,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4620,
                                                                  "end": 4624,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 124,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 124,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4625,
                                                                "end": 4635,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 124,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 124,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "CONCENTRIC"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4657,
                                                              "end": 4681,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 125,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 125,
                                                                  "column": 44
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4657,
                                                                "end": 4672,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 125,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 125,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4657,
                                                                  "end": 4667,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 125,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 125,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint"
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4668,
                                                                  "end": 4672,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 125,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 125,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4673,
                                                                "end": 4681,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 125,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 125,
                                                                    "column": 44
                                                                  }
                                                                },
                                                                "name": "COLINEAR"
                                                              },
                                                              "computed": false
                                                            },
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 4718,
                                                              "end": 4746,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 126,
                                                                  "column": 20
                                                                },
                                                                "end": {
                                                                  "line": 126,
                                                                  "column": 48
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "MemberExpression",
                                                                "start": 4718,
                                                                "end": 4733,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 126,
                                                                    "column": 20
                                                                  },
                                                                  "end": {
                                                                    "line": 126,
                                                                    "column": 35
                                                                  }
                                                                },
                                                                "object": {
                                                                  "type": "Identifier",
                                                                  "start": 4718,
                                                                  "end": 4728,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 126,
                                                                      "column": 20
                                                                    },
                                                                    "end": {
                                                                      "line": 126,
                                                                      "column": 30
                                                                    }
                                                                  },
                                                                  "name": "Constraint",
                                                                  "leadingComments": null
                                                                },
                                                                "property": {
                                                                  "type": "Identifier",
                                                                  "start": 4729,
                                                                  "end": 4733,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 126,
                                                                      "column": 31
                                                                    },
                                                                    "end": {
                                                                      "line": 126,
                                                                      "column": 35
                                                                    }
                                                                  },
                                                                  "name": "Type"
                                                                },
                                                                "computed": false,
                                                                "leadingComments": null
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 4734,
                                                                "end": 4746,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 126,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 126,
                                                                    "column": 48
                                                                  }
                                                                },
                                                                "name": "EQUAL_RADIUS",
                                                                "leadingComments": null,
                                                                "trailingComments": null
                                                              },
                                                              "computed": false,
                                                              "leadingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 4687,
                                                                  "end": 4697,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 125,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 125,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    4687,
                                                                    4697
                                                                  ]
                                                                }
                                                              ],
                                                              "trailingComments": [
                                                                {
                                                                  "type": "CommentLine",
                                                                  "value": "not sure",
                                                                  "start": 4748,
                                                                  "end": 4758,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 126,
                                                                      "column": 50
                                                                    },
                                                                    "end": {
                                                                      "line": 126,
                                                                      "column": 60
                                                                    }
                                                                  },
                                                                  "range": [
                                                                    4748,
                                                                    4758
                                                                  ]
                                                                }
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 4777,
                                                          "end": 4780,
                                                          "loc": {
                                                            "start": {
                                                              "line": 127,
                                                              "column": 18
                                                            },
                                                            "end": {
                                                              "line": 127,
                                                              "column": 21
                                                            }
                                                          },
                                                          "name": "map",
                                                          "leadingComments": [
                                                            {
                                                              "type": "CommentLine",
                                                              "value": "not sure",
                                                              "start": 4748,
                                                              "end": 4758,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 126,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 126,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "range": [
                                                                4748,
                                                                4758
                                                              ]
                                                            }
                                                          ]
                                                        },
                                                        "computed": false
                                                      },
                                                      "arguments": [
                                                        {
                                                          "type": "ArrowFunctionExpression",
                                                          "start": 4781,
                                                          "end": 4794,
                                                          "loc": {
                                                            "start": {
                                                              "line": 127,
                                                              "column": 22
                                                            },
                                                            "end": {
                                                              "line": 127,
                                                              "column": 35
                                                            }
                                                          },
                                                          "id": null,
                                                          "generator": false,
                                                          "expression": true,
                                                          "async": false,
                                                          "params": [
                                                            {
                                                              "type": "Identifier",
                                                              "start": 4781,
                                                              "end": 4784,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 127,
                                                                  "column": 22
                                                                },
                                                                "end": {
                                                                  "line": 127,
                                                                  "column": 25
                                                                }
                                                              },
                                                              "name": "obj"
                                                            }
                                                          ],
                                                          "body": {
                                                            "type": "MemberExpression",
                                                            "start": 4788,
                                                            "end": 4794,
                                                            "loc": {
                                                              "start": {
                                                                "line": 127,
                                                                "column": 29
                                                              },
                                                              "end": {
                                                                "line": 127,
                                                                "column": 35
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 4788,
                                                              "end": 4791,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 127,
                                                                  "column": 29
                                                                },
                                                                "end": {
                                                                  "line": 127,
                                                                  "column": 32
                                                                }
                                                              },
                                                              "name": "obj"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 4792,
                                                              "end": 4793,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 127,
                                                                  "column": 33
                                                                },
                                                                "end": {
                                                                  "line": 127,
                                                                  "column": 34
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  }
                                                ],
                                                "kind": "var"
                                              },
                                              {
                                                "type": "IfStatement",
                                                "start": 4813,
                                                "end": 4941,
                                                "loc": {
                                                  "start": {
                                                    "line": 128,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 129,
                                                    "column": 32
                                                  }
                                                },
                                                "test": {
                                                  "type": "LogicalExpression",
                                                  "start": 4817,
                                                  "end": 4907,
                                                  "loc": {
                                                    "start": {
                                                      "line": 128,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 128,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "LogicalExpression",
                                                    "start": 4817,
                                                    "end": 4883,
                                                    "loc": {
                                                      "start": {
                                                        "line": 128,
                                                        "column": 20
                                                      },
                                                      "end": {
                                                        "line": 128,
                                                        "column": 86
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "BinaryExpression",
                                                      "start": 4817,
                                                      "end": 4859,
                                                      "loc": {
                                                        "start": {
                                                          "line": 128,
                                                          "column": 20
                                                        },
                                                        "end": {
                                                          "line": 128,
                                                          "column": 62
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "CallExpression",
                                                        "start": 4817,
                                                        "end": 4852,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 20
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 55
                                                          }
                                                        },
                                                        "callee": {
                                                          "type": "MemberExpression",
                                                          "start": 4817,
                                                          "end": 4842,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 20
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 45
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "Identifier",
                                                            "start": 4817,
                                                            "end": 4834,
                                                            "loc": {
                                                              "start": {
                                                                "line": 128,
                                                                "column": 20
                                                              },
                                                              "end": {
                                                                "line": 128,
                                                                "column": 37
                                                              }
                                                            },
                                                            "name": "binaryCommutative"
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 4835,
                                                            "end": 4842,
                                                            "loc": {
                                                              "start": {
                                                                "line": 128,
                                                                "column": 38
                                                              },
                                                              "end": {
                                                                "line": 128,
                                                                "column": 45
                                                              }
                                                            },
                                                            "name": "indexOf"
                                                          },
                                                          "computed": false
                                                        },
                                                        "arguments": [
                                                          {
                                                            "type": "MemberExpression",
                                                            "start": 4843,
                                                            "end": 4851,
                                                            "loc": {
                                                              "start": {
                                                                "line": 128,
                                                                "column": 46
                                                              },
                                                              "end": {
                                                                "line": 128,
                                                                "column": 54
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 4843,
                                                              "end": 4848,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 128,
                                                                  "column": 46
                                                                },
                                                                "end": {
                                                                  "line": 128,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "types"
                                                            },
                                                            "property": {
                                                              "type": "Literal",
                                                              "start": 4849,
                                                              "end": 4850,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 128,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 128,
                                                                  "column": 53
                                                                }
                                                              },
                                                              "value": 0,
                                                              "rawValue": 0,
                                                              "raw": "0"
                                                            },
                                                            "computed": true
                                                          }
                                                        ]
                                                      },
                                                      "operator": "!==",
                                                      "right": {
                                                        "type": "UnaryExpression",
                                                        "start": 4857,
                                                        "end": 4859,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 60
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 62
                                                          }
                                                        },
                                                        "operator": "-",
                                                        "prefix": true,
                                                        "argument": {
                                                          "type": "Literal",
                                                          "start": 4858,
                                                          "end": 4859,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 61
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 62
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        }
                                                      }
                                                    },
                                                    "operator": "&&",
                                                    "right": {
                                                      "type": "BinaryExpression",
                                                      "start": 4863,
                                                      "end": 4883,
                                                      "loc": {
                                                        "start": {
                                                          "line": 128,
                                                          "column": 66
                                                        },
                                                        "end": {
                                                          "line": 128,
                                                          "column": 86
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "MemberExpression",
                                                        "start": 4863,
                                                        "end": 4870,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 66
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 73
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4863,
                                                          "end": 4867,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 66
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 70
                                                            }
                                                          },
                                                          "name": "args"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 4868,
                                                          "end": 4869,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 72
                                                            }
                                                          },
                                                          "value": 0,
                                                          "rawValue": 0,
                                                          "raw": "0"
                                                        },
                                                        "computed": true
                                                      },
                                                      "operator": "===",
                                                      "right": {
                                                        "type": "MemberExpression",
                                                        "start": 4875,
                                                        "end": 4883,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 78
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 86
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 4875,
                                                          "end": 4880,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 78
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 83
                                                            }
                                                          },
                                                          "name": "args2"
                                                        },
                                                        "property": {
                                                          "type": "Literal",
                                                          "start": 4881,
                                                          "end": 4882,
                                                          "loc": {
                                                            "start": {
                                                              "line": 128,
                                                              "column": 84
                                                            },
                                                            "end": {
                                                              "line": 128,
                                                              "column": 85
                                                            }
                                                          },
                                                          "value": 1,
                                                          "rawValue": 1,
                                                          "raw": "1"
                                                        },
                                                        "computed": true
                                                      }
                                                    }
                                                  },
                                                  "operator": "&&",
                                                  "right": {
                                                    "type": "BinaryExpression",
                                                    "start": 4887,
                                                    "end": 4907,
                                                    "loc": {
                                                      "start": {
                                                        "line": 128,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 128,
                                                        "column": 110
                                                      }
                                                    },
                                                    "left": {
                                                      "type": "MemberExpression",
                                                      "start": 4887,
                                                      "end": 4894,
                                                      "loc": {
                                                        "start": {
                                                          "line": 128,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 128,
                                                          "column": 97
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4887,
                                                        "end": 4891,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 90
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 94
                                                          }
                                                        },
                                                        "name": "args"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4892,
                                                        "end": 4893,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 95
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 96
                                                          }
                                                        },
                                                        "value": 1,
                                                        "rawValue": 1,
                                                        "raw": "1"
                                                      },
                                                      "computed": true
                                                    },
                                                    "operator": "===",
                                                    "right": {
                                                      "type": "MemberExpression",
                                                      "start": 4899,
                                                      "end": 4907,
                                                      "loc": {
                                                        "start": {
                                                          "line": 128,
                                                          "column": 102
                                                        },
                                                        "end": {
                                                          "line": 128,
                                                          "column": 110
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "Identifier",
                                                        "start": 4899,
                                                        "end": 4904,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 102
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 107
                                                          }
                                                        },
                                                        "name": "args2"
                                                      },
                                                      "property": {
                                                        "type": "Literal",
                                                        "start": 4905,
                                                        "end": 4906,
                                                        "loc": {
                                                          "start": {
                                                            "line": 128,
                                                            "column": 108
                                                          },
                                                          "end": {
                                                            "line": 128,
                                                            "column": 109
                                                          }
                                                        },
                                                        "value": 0,
                                                        "rawValue": 0,
                                                        "raw": "0"
                                                      },
                                                      "computed": true
                                                    }
                                                  }
                                                },
                                                "consequent": {
                                                  "type": "ReturnStatement",
                                                  "start": 4929,
                                                  "end": 4941,
                                                  "loc": {
                                                    "start": {
                                                      "line": 129,
                                                      "column": 20
                                                    },
                                                    "end": {
                                                      "line": 129,
                                                      "column": 32
                                                    }
                                                  },
                                                  "argument": {
                                                    "type": "Literal",
                                                    "start": 4936,
                                                    "end": 4940,
                                                    "loc": {
                                                      "start": {
                                                        "line": 129,
                                                        "column": 27
                                                      },
                                                      "end": {
                                                        "line": 129,
                                                        "column": 31
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  }
                                                },
                                                "alternate": null
                                              },
                                              {
                                                "type": "ReturnStatement",
                                                "start": 4959,
                                                "end": 4972,
                                                "loc": {
                                                  "start": {
                                                    "line": 131,
                                                    "column": 16
                                                  },
                                                  "end": {
                                                    "line": 131,
                                                    "column": 29
                                                  }
                                                },
                                                "argument": {
                                                  "type": "Literal",
                                                  "start": 4966,
                                                  "end": 4971,
                                                  "loc": {
                                                    "start": {
                                                      "line": 131,
                                                      "column": 23
                                                    },
                                                    "end": {
                                                      "line": 131,
                                                      "column": 28
                                                    }
                                                  },
                                                  "value": false,
                                                  "rawValue": false,
                                                  "raw": "false"
                                                }
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "leadingComments": null
                                },
                                "leadingComments": [
                                  {
                                    "type": "CommentLine",
                                    "value": "TODO: optimize this O(N) search",
                                    "start": 3653,
                                    "end": 3686,
                                    "loc": {
                                      "start": {
                                        "line": 104,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 104,
                                        "column": 45
                                      }
                                    },
                                    "range": [
                                      3653,
                                      3686
                                    ]
                                  }
                                ]
                              }
                            ],
                            "trailingComments": null
                          },
                          "trailingComments": null
                        },
                        "trailingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "if the new constraint is not excessive, then take it into account",
                          "start": 2392,
                          "end": 2459,
                          "loc": {
                            "start": {
                              "line": 78,
                              "column": 8
                            },
                            "end": {
                              "line": 78,
                              "column": 75
                            }
                          },
                          "range": [
                            2392,
                            2459
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 5007,
                          "end": 5030,
                          "loc": {
                            "start": {
                              "line": 134,
                              "column": 8
                            },
                            "end": {
                              "line": 134,
                              "column": 31
                            }
                          },
                          "range": [
                            5007,
                            5030
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 5039,
                      "end": 5109,
                      "loc": {
                        "start": {
                          "line": 135,
                          "column": 8
                        },
                        "end": {
                          "line": 136,
                          "column": 61
                        }
                      },
                      "test": {
                        "type": "Identifier",
                        "start": 5043,
                        "end": 5046,
                        "loc": {
                          "start": {
                            "line": 135,
                            "column": 12
                          },
                          "end": {
                            "line": 135,
                            "column": 15
                          }
                        },
                        "name": "add",
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 5060,
                        "end": 5109,
                        "loc": {
                          "start": {
                            "line": 136,
                            "column": 12
                          },
                          "end": {
                            "line": 136,
                            "column": 61
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 5060,
                          "end": 5108,
                          "loc": {
                            "start": {
                              "line": 136,
                              "column": 12
                            },
                            "end": {
                              "line": 136,
                              "column": 60
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 5060,
                            "end": 5081,
                            "loc": {
                              "start": {
                                "line": 136,
                                "column": 12
                              },
                              "end": {
                                "line": 136,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 5060,
                              "end": 5076,
                              "loc": {
                                "start": {
                                  "line": 136,
                                  "column": 12
                                },
                                "end": {
                                  "line": 136,
                                  "column": 28
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 5060,
                                "end": 5064,
                                "loc": {
                                  "start": {
                                    "line": 136,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 136,
                                    "column": 16
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 5065,
                                "end": 5076,
                                "loc": {
                                  "start": {
                                    "line": 136,
                                    "column": 17
                                  },
                                  "end": {
                                    "line": 136,
                                    "column": 28
                                  }
                                },
                                "name": "constraints"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5077,
                              "end": 5081,
                              "loc": {
                                "start": {
                                  "line": 136,
                                  "column": 29
                                },
                                "end": {
                                  "line": 136,
                                  "column": 33
                                }
                              },
                              "name": "push"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "ArrayExpression",
                              "start": 5082,
                              "end": 5107,
                              "loc": {
                                "start": {
                                  "line": 136,
                                  "column": 34
                                },
                                "end": {
                                  "line": 136,
                                  "column": 59
                                }
                              },
                              "elements": [
                                {
                                  "type": "Identifier",
                                  "start": 5083,
                                  "end": 5088,
                                  "loc": {
                                    "start": {
                                      "line": 136,
                                      "column": 35
                                    },
                                    "end": {
                                      "line": 136,
                                      "column": 40
                                    }
                                  },
                                  "name": "types"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5090,
                                  "end": 5094,
                                  "loc": {
                                    "start": {
                                      "line": 136,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 136,
                                      "column": 46
                                    }
                                  },
                                  "name": "args"
                                },
                                {
                                  "type": "Identifier",
                                  "start": 5096,
                                  "end": 5106,
                                  "loc": {
                                    "start": {
                                      "line": 136,
                                      "column": 48
                                    },
                                    "end": {
                                      "line": 136,
                                      "column": 58
                                    }
                                  },
                                  "name": "attributes"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      "alternate": null,
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": "now add it internally",
                          "start": 5007,
                          "end": 5030,
                          "loc": {
                            "start": {
                              "line": 134,
                              "column": 8
                            },
                            "end": {
                              "line": 134,
                              "column": 31
                            }
                          },
                          "range": [
                            5007,
                            5030
                          ]
                        }
                      ]
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "add new constraint to internal buffer (if it is not excessive)",
                  "start": 2259,
                  "end": 2323,
                  "loc": {
                    "start": {
                      "line": 75,
                      "column": 4
                    },
                    "end": {
                      "line": 75,
                      "column": 68
                    }
                  },
                  "range": [
                    2259,
                    2323
                  ]
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5121,
                  "end": 5188,
                  "loc": {
                    "start": {
                      "line": 139,
                      "column": 4
                    },
                    "end": {
                      "line": 139,
                      "column": 71
                    }
                  },
                  "range": [
                    5121,
                    5188
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 5193,
              "end": 5455,
              "loc": {
                "start": {
                  "line": 140,
                  "column": 4
                },
                "end": {
                  "line": 148,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5193,
                "end": 5199,
                "loc": {
                  "start": {
                    "line": 140,
                    "column": 4
                  },
                  "end": {
                    "line": 140,
                    "column": 10
                  }
                },
                "name": "commit",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 5199,
                "end": 5455,
                "loc": {
                  "start": {
                    "line": 140,
                    "column": 10
                  },
                  "end": {
                    "line": 148,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 5202,
                  "end": 5455,
                  "loc": {
                    "start": {
                      "line": 140,
                      "column": 13
                    },
                    "end": {
                      "line": 148,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 5212,
                      "end": 5233,
                      "loc": {
                        "start": {
                          "line": 141,
                          "column": 8
                        },
                        "end": {
                          "line": 141,
                          "column": 29
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 5216,
                          "end": 5232,
                          "loc": {
                            "start": {
                              "line": 141,
                              "column": 12
                            },
                            "end": {
                              "line": 141,
                              "column": 28
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 5216,
                            "end": 5227,
                            "loc": {
                              "start": {
                                "line": 141,
                                "column": 12
                              },
                              "end": {
                                "line": 141,
                                "column": 23
                              }
                            },
                            "name": "constraints"
                          },
                          "init": {
                            "type": "ArrayExpression",
                            "start": 5230,
                            "end": 5232,
                            "loc": {
                              "start": {
                                "line": 141,
                                "column": 26
                              },
                              "end": {
                                "line": 141,
                                "column": 28
                              }
                            },
                            "elements": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5242,
                      "end": 5390,
                      "loc": {
                        "start": {
                          "line": 142,
                          "column": 8
                        },
                        "end": {
                          "line": 145,
                          "column": 11
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 5242,
                        "end": 5389,
                        "loc": {
                          "start": {
                            "line": 142,
                            "column": 8
                          },
                          "end": {
                            "line": 145,
                            "column": 10
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 5242,
                          "end": 5266,
                          "loc": {
                            "start": {
                              "line": 142,
                              "column": 8
                            },
                            "end": {
                              "line": 142,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 5242,
                            "end": 5258,
                            "loc": {
                              "start": {
                                "line": 142,
                                "column": 8
                              },
                              "end": {
                                "line": 142,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 5242,
                              "end": 5246,
                              "loc": {
                                "start": {
                                  "line": 142,
                                  "column": 8
                                },
                                "end": {
                                  "line": 142,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5247,
                              "end": 5258,
                              "loc": {
                                "start": {
                                  "line": 142,
                                  "column": 13
                                },
                                "end": {
                                  "line": 142,
                                  "column": 24
                                }
                              },
                              "name": "constraints"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5259,
                            "end": 5266,
                            "loc": {
                              "start": {
                                "line": 142,
                                "column": 25
                              },
                              "end": {
                                "line": 142,
                                "column": 32
                              }
                            },
                            "name": "forEach"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ArrowFunctionExpression",
                            "start": 5267,
                            "end": 5388,
                            "loc": {
                              "start": {
                                "line": 142,
                                "column": 33
                              },
                              "end": {
                                "line": 145,
                                "column": 9
                              }
                            },
                            "id": null,
                            "generator": false,
                            "expression": false,
                            "async": false,
                            "params": [
                              {
                                "type": "Identifier",
                                "start": 5267,
                                "end": 5270,
                                "loc": {
                                  "start": {
                                    "line": 142,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 142,
                                    "column": 36
                                  }
                                },
                                "name": "obj"
                              }
                            ],
                            "body": {
                              "type": "BlockStatement",
                              "start": 5274,
                              "end": 5388,
                              "loc": {
                                "start": {
                                  "line": 142,
                                  "column": 40
                                },
                                "end": {
                                  "line": 145,
                                  "column": 9
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 5288,
                                  "end": 5340,
                                  "loc": {
                                    "start": {
                                      "line": 143,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 143,
                                      "column": 64
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 5292,
                                      "end": 5339,
                                      "loc": {
                                        "start": {
                                          "line": 143,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 143,
                                          "column": 63
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 5292,
                                        "end": 5298,
                                        "loc": {
                                          "start": {
                                            "line": 143,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 143,
                                            "column": 22
                                          }
                                        },
                                        "name": "constr"
                                      },
                                      "init": {
                                        "type": "NewExpression",
                                        "start": 5301,
                                        "end": 5339,
                                        "loc": {
                                          "start": {
                                            "line": 143,
                                            "column": 25
                                          },
                                          "end": {
                                            "line": 143,
                                            "column": 63
                                          }
                                        },
                                        "callee": {
                                          "type": "Identifier",
                                          "start": 5305,
                                          "end": 5315,
                                          "loc": {
                                            "start": {
                                              "line": 143,
                                              "column": 29
                                            },
                                            "end": {
                                              "line": 143,
                                              "column": 39
                                            }
                                          },
                                          "name": "Constraint"
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 5316,
                                            "end": 5322,
                                            "loc": {
                                              "start": {
                                                "line": 143,
                                                "column": 40
                                              },
                                              "end": {
                                                "line": 143,
                                                "column": 46
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5316,
                                              "end": 5319,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 40
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 43
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5320,
                                              "end": 5321,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 44
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 45
                                                }
                                              },
                                              "value": 0,
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5324,
                                            "end": 5330,
                                            "loc": {
                                              "start": {
                                                "line": 143,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 143,
                                                "column": 54
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5324,
                                              "end": 5327,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 51
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5328,
                                              "end": 5329,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 52
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 53
                                                }
                                              },
                                              "value": 1,
                                              "rawValue": 1,
                                              "raw": "1"
                                            },
                                            "computed": true
                                          },
                                          {
                                            "type": "MemberExpression",
                                            "start": 5332,
                                            "end": 5338,
                                            "loc": {
                                              "start": {
                                                "line": 143,
                                                "column": 56
                                              },
                                              "end": {
                                                "line": 143,
                                                "column": 62
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 5332,
                                              "end": 5335,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 56
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 59
                                                }
                                              },
                                              "name": "obj"
                                            },
                                            "property": {
                                              "type": "Literal",
                                              "start": 5336,
                                              "end": 5337,
                                              "loc": {
                                                "start": {
                                                  "line": 143,
                                                  "column": 60
                                                },
                                                "end": {
                                                  "line": 143,
                                                  "column": 61
                                                }
                                              },
                                              "value": 2,
                                              "rawValue": 2,
                                              "raw": "2"
                                            },
                                            "computed": true
                                          }
                                        ]
                                      }
                                    }
                                  ],
                                  "kind": "var"
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5353,
                                  "end": 5378,
                                  "loc": {
                                    "start": {
                                      "line": 144,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 144,
                                      "column": 37
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 5353,
                                    "end": 5377,
                                    "loc": {
                                      "start": {
                                        "line": 144,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 144,
                                        "column": 36
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 5353,
                                      "end": 5369,
                                      "loc": {
                                        "start": {
                                          "line": 144,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 144,
                                          "column": 28
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 5353,
                                        "end": 5364,
                                        "loc": {
                                          "start": {
                                            "line": 144,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 144,
                                            "column": 23
                                          }
                                        },
                                        "name": "constraints"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5365,
                                        "end": 5369,
                                        "loc": {
                                          "start": {
                                            "line": 144,
                                            "column": 24
                                          },
                                          "end": {
                                            "line": 144,
                                            "column": 28
                                          }
                                        },
                                        "name": "push"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Identifier",
                                        "start": 5370,
                                        "end": 5376,
                                        "loc": {
                                          "start": {
                                            "line": 144,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 144,
                                            "column": 35
                                          }
                                        },
                                        "name": "constr"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5399,
                      "end": 5421,
                      "loc": {
                        "start": {
                          "line": 146,
                          "column": 8
                        },
                        "end": {
                          "line": 146,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5399,
                        "end": 5420,
                        "loc": {
                          "start": {
                            "line": 146,
                            "column": 8
                          },
                          "end": {
                            "line": 146,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5399,
                          "end": 5415,
                          "loc": {
                            "start": {
                              "line": 146,
                              "column": 8
                            },
                            "end": {
                              "line": 146,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5399,
                            "end": 5403,
                            "loc": {
                              "start": {
                                "line": 146,
                                "column": 8
                              },
                              "end": {
                                "line": 146,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5404,
                            "end": 5415,
                            "loc": {
                              "start": {
                                "line": 146,
                                "column": 13
                              },
                              "end": {
                                "line": 146,
                                "column": 24
                              }
                            },
                            "name": "constraints"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 5418,
                          "end": 5420,
                          "loc": {
                            "start": {
                              "line": 146,
                              "column": 27
                            },
                            "end": {
                              "line": 146,
                              "column": 29
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 5430,
                      "end": 5449,
                      "loc": {
                        "start": {
                          "line": 147,
                          "column": 8
                        },
                        "end": {
                          "line": 147,
                          "column": 27
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 5437,
                        "end": 5448,
                        "loc": {
                          "start": {
                            "line": 147,
                            "column": 15
                          },
                          "end": {
                            "line": 147,
                            "column": 26
                          }
                        },
                        "name": "constraints"
                      }
                    }
                  ]
                }
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": "returns all constraints in the internal buffer, purges the buffer",
                  "start": 5121,
                  "end": 5188,
                  "loc": {
                    "start": {
                      "line": 139,
                      "column": 4
                    },
                    "end": {
                      "line": 139,
                      "column": 71
                    }
                  },
                  "range": [
                    5121,
                    5188
                  ]
                }
              ]
            }
          ],
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Constraints adder ========================",
            "start": 992,
            "end": 1059,
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 43,
                "column": 67
              }
            },
            "range": [
              992,
              1059
            ]
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5459,
            "end": 5538,
            "loc": {
              "start": {
                "line": 151,
                "column": 0
              },
              "end": {
                "line": 151,
                "column": 79
              }
            },
            "range": [
              5459,
              5538
            ]
          },
          {
            "type": "Block",
            "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
            "start": 5539,
            "end": 5631,
            "loc": {
              "start": {
                "line": 152,
                "column": 0
              },
              "end": {
                "line": 154,
                "column": 3
              }
            },
            "range": [
              5539,
              5631
            ]
          }
        ]
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Constraints adder ========================",
          "start": 992,
          "end": 1059,
          "loc": {
            "start": {
              "line": 43,
              "column": 0
            },
            "end": {
              "line": 43,
              "column": 67
            }
          },
          "range": [
            992,
            1059
          ]
        }
      ],
      "trailingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5459,
          "end": 5538,
          "loc": {
            "start": {
              "line": 151,
              "column": 0
            },
            "end": {
              "line": 151,
              "column": 79
            }
          },
          "range": [
            5459,
            5538
          ]
        },
        {
          "type": "Block",
          "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
          "start": 5539,
          "end": 5631,
          "loc": {
            "start": {
              "line": 152,
              "column": 0
            },
            "end": {
              "line": 154,
              "column": 3
            }
          },
          "range": [
            5539,
            5631
          ]
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "start": 5632,
      "end": 8864,
      "loc": {
        "start": {
          "line": 155,
          "column": 0
        },
        "end": {
          "line": 223,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 5639,
        "end": 8864,
        "loc": {
          "start": {
            "line": 155,
            "column": 7
          },
          "end": {
            "line": 223,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 5645,
          "end": 5664,
          "loc": {
            "start": {
              "line": 155,
              "column": 13
            },
            "end": {
              "line": 155,
              "column": 32
            }
          },
          "name": "ConstraintGenerator",
          "leadingComments": null
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 5665,
          "end": 8864,
          "loc": {
            "start": {
              "line": 155,
              "column": 33
            },
            "end": {
              "line": 223,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 5671,
              "end": 6071,
              "loc": {
                "start": {
                  "line": 156,
                  "column": 4
                },
                "end": {
                  "line": 170,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 5671,
                "end": 5682,
                "loc": {
                  "start": {
                    "line": 156,
                    "column": 4
                  },
                  "end": {
                    "line": 156,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 5682,
                "end": 6071,
                "loc": {
                  "start": {
                    "line": 156,
                    "column": 15
                  },
                  "end": {
                    "line": 170,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 5683,
                    "end": 5689,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 16
                      },
                      "end": {
                        "line": 156,
                        "column": 22
                      }
                    },
                    "name": "sketch"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 5691,
                  "end": 6071,
                  "loc": {
                    "start": {
                      "line": 156,
                      "column": 24
                    },
                    "end": {
                      "line": 170,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 5701,
                      "end": 5722,
                      "loc": {
                        "start": {
                          "line": 157,
                          "column": 8
                        },
                        "end": {
                          "line": 157,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5701,
                        "end": 5721,
                        "loc": {
                          "start": {
                            "line": 157,
                            "column": 8
                          },
                          "end": {
                            "line": 157,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5701,
                          "end": 5712,
                          "loc": {
                            "start": {
                              "line": 157,
                              "column": 8
                            },
                            "end": {
                              "line": 157,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5701,
                            "end": 5705,
                            "loc": {
                              "start": {
                                "line": 157,
                                "column": 8
                              },
                              "end": {
                                "line": 157,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5706,
                            "end": 5712,
                            "loc": {
                              "start": {
                                "line": 157,
                                "column": 13
                              },
                              "end": {
                                "line": 157,
                                "column": 19
                              }
                            },
                            "name": "sketch"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 5715,
                          "end": 5721,
                          "loc": {
                            "start": {
                              "line": 157,
                              "column": 22
                            },
                            "end": {
                              "line": 157,
                              "column": 28
                            }
                          },
                          "name": "sketch"
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 5732,
                          "end": 5761,
                          "loc": {
                            "start": {
                              "line": 159,
                              "column": 8
                            },
                            "end": {
                              "line": 159,
                              "column": 37
                            }
                          },
                          "range": [
                            5732,
                            5761
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5770,
                      "end": 5930,
                      "loc": {
                        "start": {
                          "line": 160,
                          "column": 8
                        },
                        "end": {
                          "line": 165,
                          "column": 10
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5770,
                        "end": 5929,
                        "loc": {
                          "start": {
                            "line": 160,
                            "column": 8
                          },
                          "end": {
                            "line": 165,
                            "column": 9
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5770,
                          "end": 5783,
                          "loc": {
                            "start": {
                              "line": 160,
                              "column": 8
                            },
                            "end": {
                              "line": 160,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5770,
                            "end": 5774,
                            "loc": {
                              "start": {
                                "line": 160,
                                "column": 8
                              },
                              "end": {
                                "line": 160,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5775,
                            "end": 5783,
                            "loc": {
                              "start": {
                                "line": 160,
                                "column": 13
                              },
                              "end": {
                                "line": 160,
                                "column": 21
                              }
                            },
                            "name": "generate"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 5786,
                          "end": 5929,
                          "loc": {
                            "start": {
                              "line": 160,
                              "column": 24
                            },
                            "end": {
                              "line": 165,
                              "column": 9
                            }
                          },
                          "properties": [
                            {
                              "type": "Property",
                              "start": 5800,
                              "end": 5820,
                              "loc": {
                                "start": {
                                  "line": 161,
                                  "column": 12
                                },
                                "end": {
                                  "line": 161,
                                  "column": 32
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5800,
                                "end": 5813,
                                "loc": {
                                  "start": {
                                    "line": 161,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 161,
                                    "column": 25
                                  }
                                },
                                "name": "horizontality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5816,
                                "end": 5820,
                                "loc": {
                                  "start": {
                                    "line": 161,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 161,
                                    "column": 32
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5834,
                              "end": 5852,
                              "loc": {
                                "start": {
                                  "line": 162,
                                  "column": 12
                                },
                                "end": {
                                  "line": 162,
                                  "column": 30
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5834,
                                "end": 5845,
                                "loc": {
                                  "start": {
                                    "line": 162,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 162,
                                    "column": 23
                                  }
                                },
                                "name": "verticality"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5848,
                                "end": 5852,
                                "loc": {
                                  "start": {
                                    "line": 162,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 162,
                                    "column": 30
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5866,
                              "end": 5889,
                              "loc": {
                                "start": {
                                  "line": 163,
                                  "column": 12
                                },
                                "end": {
                                  "line": 163,
                                  "column": 35
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5866,
                                "end": 5882,
                                "loc": {
                                  "start": {
                                    "line": 163,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 163,
                                    "column": 28
                                  }
                                },
                                "name": "pointCoincidence"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5885,
                                "end": 5889,
                                "loc": {
                                  "start": {
                                    "line": 163,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 163,
                                    "column": 35
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            },
                            {
                              "type": "Property",
                              "start": 5903,
                              "end": 5918,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 12
                                },
                                "end": {
                                  "line": 164,
                                  "column": 27
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": false,
                              "key": {
                                "type": "Identifier",
                                "start": 5903,
                                "end": 5911,
                                "loc": {
                                  "start": {
                                    "line": 164,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 164,
                                    "column": 20
                                  }
                                },
                                "name": "tangency"
                              },
                              "value": {
                                "type": "Literal",
                                "start": 5914,
                                "end": 5918,
                                "loc": {
                                  "start": {
                                    "line": 164,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 164,
                                    "column": 27
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              },
                              "kind": "init"
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " default options and values",
                          "start": 5732,
                          "end": 5761,
                          "loc": {
                            "start": {
                              "line": 159,
                              "column": 8
                            },
                            "end": {
                              "line": 159,
                              "column": 37
                            }
                          },
                          "range": [
                            5732,
                            5761
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": "note: it should be static, but ES6 is against it",
                          "start": 5940,
                          "end": 5990,
                          "loc": {
                            "start": {
                              "line": 167,
                              "column": 8
                            },
                            "end": {
                              "line": 167,
                              "column": 58
                            }
                          },
                          "range": [
                            5940,
                            5990
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5999,
                      "end": 6028,
                      "loc": {
                        "start": {
                          "line": 168,
                          "column": 8
                        },
                        "end": {
                          "line": 168,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5999,
                        "end": 6027,
                        "loc": {
                          "start": {
                            "line": 168,
                            "column": 8
                          },
                          "end": {
                            "line": 168,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5999,
                          "end": 6020,
                          "loc": {
                            "start": {
                              "line": 168,
                              "column": 8
                            },
                            "end": {
                              "line": 168,
                              "column": 29
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5999,
                            "end": 6003,
                            "loc": {
                              "start": {
                                "line": 168,
                                "column": 8
                              },
                              "end": {
                                "line": 168,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6004,
                            "end": 6020,
                            "loc": {
                              "start": {
                                "line": 168,
                                "column": 13
                              },
                              "end": {
                                "line": 168,
                                "column": 29
                              }
                            },
                            "name": "angularTolerance"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Literal",
                          "start": 6023,
                          "end": 6027,
                          "loc": {
                            "start": {
                              "line": 168,
                              "column": 32
                            },
                            "end": {
                              "line": 168,
                              "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": 5940,
                          "end": 5990,
                          "loc": {
                            "start": {
                              "line": 167,
                              "column": 8
                            },
                            "end": {
                              "line": 167,
                              "column": 58
                            }
                          },
                          "range": [
                            5940,
                            5990
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 6037,
                      "end": 6065,
                      "loc": {
                        "start": {
                          "line": 169,
                          "column": 8
                        },
                        "end": {
                          "line": 169,
                          "column": 36
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 6037,
                        "end": 6064,
                        "loc": {
                          "start": {
                            "line": 169,
                            "column": 8
                          },
                          "end": {
                            "line": 169,
                            "column": 35
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 6037,
                          "end": 6057,
                          "loc": {
                            "start": {
                              "line": 169,
                              "column": 8
                            },
                            "end": {
                              "line": 169,
                              "column": 28
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 6037,
                            "end": 6041,
                            "loc": {
                              "start": {
                                "line": 169,
                                "column": 8
                              },
                              "end": {
                                "line": 169,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 6042,
                            "end": 6057,
                            "loc": {
                              "start": {
                                "line": 169,
                                "column": 13
                              },
                              "end": {
                                "line": 169,
                                "column": 28
                              }
                            },
                            "name": "linearTolerance"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Literal",
                          "start": 6060,
                          "end": 6064,
                          "loc": {
                            "start": {
                              "line": 169,
                              "column": 31
                            },
                            "end": {
                              "line": 169,
                              "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": 6078,
                  "end": 6186,
                  "loc": {
                    "start": {
                      "line": 173,
                      "column": 4
                    },
                    "end": {
                      "line": 173,
                      "column": 112
                    }
                  },
                  "range": [
                    6078,
                    6186
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 6191,
              "end": 8862,
              "loc": {
                "start": {
                  "line": 174,
                  "column": 4
                },
                "end": {
                  "line": 222,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 6191,
                "end": 6217,
                "loc": {
                  "start": {
                    "line": 174,
                    "column": 4
                  },
                  "end": {
                    "line": 174,
                    "column": 30
                  }
                },
                "name": "generateImpliedConstraints",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 6217,
                "end": 8862,
                "loc": {
                  "start": {
                    "line": 174,
                    "column": 30
                  },
                  "end": {
                    "line": 222,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 6218,
                    "end": 6227,
                    "loc": {
                      "start": {
                        "line": 174,
                        "column": 31
                      },
                      "end": {
                        "line": 174,
                        "column": 40
                      }
                    },
                    "name": "relatedTo"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 6229,
                  "end": 8862,
                  "loc": {
                    "start": {
                      "line": 174,
                      "column": 42
                    },
                    "end": {
                      "line": 222,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 6239,
                      "end": 6285,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 8
                        },
                        "end": {
                          "line": 175,
                          "column": 54
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6243,
                          "end": 6284,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 12
                            },
                            "end": {
                              "line": 175,
                              "column": 53
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6243,
                            "end": 6248,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 12
                              },
                              "end": {
                                "line": 175,
                                "column": 17
                              }
                            },
                            "name": "adder"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6251,
                            "end": 6284,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 20
                              },
                              "end": {
                                "line": 175,
                                "column": 53
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6255,
                              "end": 6271,
                              "loc": {
                                "start": {
                                  "line": 175,
                                  "column": 24
                                },
                                "end": {
                                  "line": 175,
                                  "column": 40
                                }
                              },
                              "name": "ConstraintsAdder"
                            },
                            "arguments": [
                              {
                                "type": "MemberExpression",
                                "start": 6272,
                                "end": 6283,
                                "loc": {
                                  "start": {
                                    "line": 175,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 175,
                                    "column": 52
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6272,
                                  "end": 6276,
                                  "loc": {
                                    "start": {
                                      "line": 175,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 175,
                                      "column": 45
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6277,
                                  "end": 6283,
                                  "loc": {
                                    "start": {
                                      "line": 175,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 175,
                                      "column": 52
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6295,
                      "end": 6346,
                      "loc": {
                        "start": {
                          "line": 177,
                          "column": 8
                        },
                        "end": {
                          "line": 177,
                          "column": 59
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6299,
                          "end": 6345,
                          "loc": {
                            "start": {
                              "line": 177,
                              "column": 12
                            },
                            "end": {
                              "line": 177,
                              "column": 58
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6299,
                            "end": 6310,
                            "loc": {
                              "start": {
                                "line": 177,
                                "column": 12
                              },
                              "end": {
                                "line": 177,
                                "column": 23
                              }
                            },
                            "name": "mainObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6313,
                            "end": 6345,
                            "loc": {
                              "start": {
                                "line": 177,
                                "column": 26
                              },
                              "end": {
                                "line": 177,
                                "column": 58
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6313,
                              "end": 6343,
                              "loc": {
                                "start": {
                                  "line": 177,
                                  "column": 26
                                },
                                "end": {
                                  "line": 177,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 6313,
                                "end": 6324,
                                "loc": {
                                  "start": {
                                    "line": 177,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 177,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 6313,
                                  "end": 6317,
                                  "loc": {
                                    "start": {
                                      "line": 177,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 177,
                                      "column": 30
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 6318,
                                  "end": 6324,
                                  "loc": {
                                    "start": {
                                      "line": 177,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 177,
                                      "column": 37
                                    }
                                  },
                                  "name": "sketch"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6325,
                                "end": 6343,
                                "loc": {
                                  "start": {
                                    "line": 177,
                                    "column": 38
                                  },
                                  "end": {
                                    "line": 177,
                                    "column": 56
                                  }
                                },
                                "name": "getObjectsOnSketch"
                              },
                              "computed": false
                            },
                            "arguments": []
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6355,
                      "end": 6415,
                      "loc": {
                        "start": {
                          "line": 178,
                          "column": 8
                        },
                        "end": {
                          "line": 178,
                          "column": 68
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6359,
                          "end": 6414,
                          "loc": {
                            "start": {
                              "line": 178,
                              "column": 12
                            },
                            "end": {
                              "line": 178,
                              "column": 67
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6359,
                            "end": 6369,
                            "loc": {
                              "start": {
                                "line": 178,
                                "column": 12
                              },
                              "end": {
                                "line": 178,
                                "column": 22
                              }
                            },
                            "name": "allObjects"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 6372,
                            "end": 6414,
                            "loc": {
                              "start": {
                                "line": 178,
                                "column": 25
                              },
                              "end": {
                                "line": 178,
                                "column": 67
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 6372,
                              "end": 6401,
                              "loc": {
                                "start": {
                                  "line": 178,
                                  "column": 25
                                },
                                "end": {
                                  "line": 178,
                                  "column": 54
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 6372,
                                "end": 6378,
                                "loc": {
                                  "start": {
                                    "line": 178,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 178,
                                    "column": 31
                                  }
                                },
                                "name": "Sketch"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 6379,
                                "end": 6401,
                                "loc": {
                                  "start": {
                                    "line": 178,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 178,
                                    "column": 54
                                  }
                                },
                                "name": "ForObjectsWithChildren"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6402,
                                "end": 6413,
                                "loc": {
                                  "start": {
                                    "line": 178,
                                    "column": 55
                                  },
                                  "end": {
                                    "line": 178,
                                    "column": 66
                                  }
                                },
                                "name": "mainObjects"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "IfStatement",
                      "start": 6424,
                      "end": 6488,
                      "loc": {
                        "start": {
                          "line": 179,
                          "column": 8
                        },
                        "end": {
                          "line": 180,
                          "column": 35
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 6428,
                        "end": 6451,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 12
                          },
                          "end": {
                            "line": 179,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 6428,
                          "end": 6437,
                          "loc": {
                            "start": {
                              "line": 179,
                              "column": 12
                            },
                            "end": {
                              "line": 179,
                              "column": 21
                            }
                          },
                          "name": "relatedTo"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Identifier",
                          "start": 6442,
                          "end": 6451,
                          "loc": {
                            "start": {
                              "line": 179,
                              "column": 26
                            },
                            "end": {
                              "line": 179,
                              "column": 35
                            }
                          },
                          "name": "undefined"
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 6465,
                        "end": 6488,
                        "loc": {
                          "start": {
                            "line": 180,
                            "column": 12
                          },
                          "end": {
                            "line": 180,
                            "column": 35
                          }
                        },
                        "expression": {
                          "type": "AssignmentExpression",
                          "start": 6465,
                          "end": 6487,
                          "loc": {
                            "start": {
                              "line": 180,
                              "column": 12
                            },
                            "end": {
                              "line": 180,
                              "column": 34
                            }
                          },
                          "operator": "=",
                          "left": {
                            "type": "Identifier",
                            "start": 6465,
                            "end": 6474,
                            "loc": {
                              "start": {
                                "line": 180,
                                "column": 12
                              },
                              "end": {
                                "line": 180,
                                "column": 21
                              }
                            },
                            "name": "relatedTo"
                          },
                          "right": {
                            "type": "Identifier",
                            "start": 6477,
                            "end": 6487,
                            "loc": {
                              "start": {
                                "line": 180,
                                "column": 24
                              },
                              "end": {
                                "line": 180,
                                "column": 34
                              }
                            },
                            "name": "allObjects"
                          }
                        }
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 6497,
                      "end": 6535,
                      "loc": {
                        "start": {
                          "line": 181,
                          "column": 8
                        },
                        "end": {
                          "line": 181,
                          "column": 46
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 6501,
                          "end": 6534,
                          "loc": {
                            "start": {
                              "line": 181,
                              "column": 12
                            },
                            "end": {
                              "line": 181,
                              "column": 45
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 6501,
                            "end": 6513,
                            "loc": {
                              "start": {
                                "line": 181,
                                "column": 12
                              },
                              "end": {
                                "line": 181,
                                "column": 24
                              }
                            },
                            "name": "relatedToSet"
                          },
                          "init": {
                            "type": "NewExpression",
                            "start": 6516,
                            "end": 6534,
                            "loc": {
                              "start": {
                                "line": 181,
                                "column": 27
                              },
                              "end": {
                                "line": 181,
                                "column": 45
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 6520,
                              "end": 6523,
                              "loc": {
                                "start": {
                                  "line": 181,
                                  "column": 31
                                },
                                "end": {
                                  "line": 181,
                                  "column": 34
                                }
                              },
                              "name": "Set"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 6524,
                                "end": 6533,
                                "loc": {
                                  "start": {
                                    "line": 181,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 181,
                                    "column": 44
                                  }
                                },
                                "name": "relatedTo"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var"
                    },
                    {
                      "type": "ForOfStatement",
                      "start": 6545,
                      "end": 8824,
                      "loc": {
                        "start": {
                          "line": 183,
                          "column": 8
                        },
                        "end": {
                          "line": 219,
                          "column": 9
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 6550,
                        "end": 6561,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 13
                          },
                          "end": {
                            "line": 183,
                            "column": 24
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 6554,
                            "end": 6561,
                            "loc": {
                              "start": {
                                "line": 183,
                                "column": 17
                              },
                              "end": {
                                "line": 183,
                                "column": 24
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 6554,
                              "end": 6561,
                              "loc": {
                                "start": {
                                  "line": 183,
                                  "column": 17
                                },
                                "end": {
                                  "line": 183,
                                  "column": 24
                                }
                              },
                              "name": "baseObj"
                            },
                            "init": null
                          }
                        ],
                        "kind": "var"
                      },
                      "right": {
                        "type": "Identifier",
                        "start": 6565,
                        "end": 6574,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 28
                          },
                          "end": {
                            "line": 183,
                            "column": 37
                          }
                        },
                        "name": "relatedTo"
                      },
                      "body": {
                        "type": "BlockStatement",
                        "start": 6576,
                        "end": 8824,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 39
                          },
                          "end": {
                            "line": 219,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "IfStatement",
                            "start": 6590,
                            "end": 7199,
                            "loc": {
                              "start": {
                                "line": 184,
                                "column": 12
                              },
                              "end": {
                                "line": 193,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 6594,
                              "end": 6617,
                              "loc": {
                                "start": {
                                  "line": 184,
                                  "column": 16
                                },
                                "end": {
                                  "line": 184,
                                  "column": 39
                                }
                              },
                              "left": {
                                "type": "Identifier",
                                "start": 6594,
                                "end": 6601,
                                "loc": {
                                  "start": {
                                    "line": 184,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 184,
                                    "column": 23
                                  }
                                },
                                "name": "baseObj"
                              },
                              "operator": "instanceof",
                              "right": {
                                "type": "Identifier",
                                "start": 6613,
                                "end": 6617,
                                "loc": {
                                  "start": {
                                    "line": 184,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 184,
                                    "column": 39
                                  }
                                },
                                "name": "Line"
                              }
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 6619,
                              "end": 7199,
                              "loc": {
                                "start": {
                                  "line": 184,
                                  "column": 41
                                },
                                "end": {
                                  "line": 193,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "VariableDeclaration",
                                  "start": 6702,
                                  "end": 6733,
                                  "loc": {
                                    "start": {
                                      "line": 186,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 186,
                                      "column": 47
                                    }
                                  },
                                  "declarations": [
                                    {
                                      "type": "VariableDeclarator",
                                      "start": 6706,
                                      "end": 6732,
                                      "loc": {
                                        "start": {
                                          "line": 186,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 186,
                                          "column": 46
                                        }
                                      },
                                      "id": {
                                        "type": "Identifier",
                                        "start": 6706,
                                        "end": 6709,
                                        "loc": {
                                          "start": {
                                            "line": 186,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 186,
                                            "column": 23
                                          }
                                        },
                                        "name": "vec",
                                        "leadingComments": null
                                      },
                                      "init": {
                                        "type": "CallExpression",
                                        "start": 6712,
                                        "end": 6732,
                                        "loc": {
                                          "start": {
                                            "line": 186,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 186,
                                            "column": 46
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 6712,
                                          "end": 6730,
                                          "loc": {
                                            "start": {
                                              "line": 186,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 186,
                                              "column": 44
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 6712,
                                            "end": 6719,
                                            "loc": {
                                              "start": {
                                                "line": 186,
                                                "column": 26
                                              },
                                              "end": {
                                                "line": 186,
                                                "column": 33
                                              }
                                            },
                                            "name": "baseObj"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 6720,
                                            "end": 6730,
                                            "loc": {
                                              "start": {
                                                "line": 186,
                                                "column": 34
                                              },
                                              "end": {
                                                "line": 186,
                                                "column": 44
                                              }
                                            },
                                            "name": "getTangent"
                                          },
                                          "computed": false
                                        },
                                        "arguments": []
                                      },
                                      "leadingComments": null
                                    }
                                  ],
                                  "kind": "var",
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": " generate implied horizontality or verticality",
                                      "start": 6637,
                                      "end": 6685,
                                      "loc": {
                                        "start": {
                                          "line": 185,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 185,
                                          "column": 64
                                        }
                                      },
                                      "range": [
                                        6637,
                                        6685
                                      ]
                                    }
                                  ],
                                  "trailingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 6734,
                                      "end": 6755,
                                      "loc": {
                                        "start": {
                                          "line": 186,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 186,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        6734,
                                        6755
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "IfStatement",
                                  "start": 6772,
                                  "end": 7185,
                                  "loc": {
                                    "start": {
                                      "line": 187,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 192,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "BinaryExpression",
                                    "start": 6776,
                                    "end": 6812,
                                    "loc": {
                                      "start": {
                                        "line": 187,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 187,
                                        "column": 56
                                      }
                                    },
                                    "left": {
                                      "type": "CallExpression",
                                      "start": 6776,
                                      "end": 6788,
                                      "loc": {
                                        "start": {
                                          "line": 187,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 187,
                                          "column": 32
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 6776,
                                        "end": 6786,
                                        "loc": {
                                          "start": {
                                            "line": 187,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 187,
                                            "column": 30
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 6776,
                                          "end": 6779,
                                          "loc": {
                                            "start": {
                                              "line": 187,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 187,
                                              "column": 23
                                            }
                                          },
                                          "name": "vec",
                                          "leadingComments": null
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 6780,
                                          "end": 6786,
                                          "loc": {
                                            "start": {
                                              "line": 187,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 187,
                                              "column": 30
                                            }
                                          },
                                          "name": "length"
                                        },
                                        "computed": false,
                                        "leadingComments": null
                                      },
                                      "arguments": [],
                                      "leadingComments": null
                                    },
                                    "operator": ">",
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 6791,
                                      "end": 6812,
                                      "loc": {
                                        "start": {
                                          "line": 187,
                                          "column": 35
                                        },
                                        "end": {
                                          "line": 187,
                                          "column": 56
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 6791,
                                        "end": 6795,
                                        "loc": {
                                          "start": {
                                            "line": 187,
                                            "column": 35
                                          },
                                          "end": {
                                            "line": 187,
                                            "column": 39
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 6796,
                                        "end": 6812,
                                        "loc": {
                                          "start": {
                                            "line": 187,
                                            "column": 40
                                          },
                                          "end": {
                                            "line": 187,
                                            "column": 56
                                          }
                                        },
                                        "name": "angularTolerance"
                                      },
                                      "computed": false
                                    },
                                    "leadingComments": null
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 6814,
                                    "end": 7185,
                                    "loc": {
                                      "start": {
                                        "line": 187,
                                        "column": 58
                                      },
                                      "end": {
                                        "line": 192,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "IfStatement",
                                        "start": 6836,
                                        "end": 6992,
                                        "loc": {
                                          "start": {
                                            "line": 188,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 189,
                                            "column": 110
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 6840,
                                          "end": 6880,
                                          "loc": {
                                            "start": {
                                              "line": 188,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 188,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 6840,
                                            "end": 6855,
                                            "loc": {
                                              "start": {
                                                "line": 188,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 188,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 6840,
                                              "end": 6848,
                                              "loc": {
                                                "start": {
                                                  "line": 188,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 188,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 6840,
                                                "end": 6844,
                                                "loc": {
                                                  "start": {
                                                    "line": 188,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 188,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 6845,
                                                "end": 6848,
                                                "loc": {
                                                  "start": {
                                                    "line": 188,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 188,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 6849,
                                                "end": 6854,
                                                "loc": {
                                                  "start": {
                                                    "line": 188,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 188,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 6849,
                                                  "end": 6852,
                                                  "loc": {
                                                    "start": {
                                                      "line": 188,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 188,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 6853,
                                                  "end": 6854,
                                                  "loc": {
                                                    "start": {
                                                      "line": 188,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 188,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "y"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 6859,
                                            "end": 6880,
                                            "loc": {
                                              "start": {
                                                "line": 188,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 188,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 6859,
                                              "end": 6863,
                                              "loc": {
                                                "start": {
                                                  "line": 188,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 188,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 6864,
                                              "end": 6880,
                                              "loc": {
                                                "start": {
                                                  "line": 188,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 188,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 6906,
                                          "end": 6992,
                                          "loc": {
                                            "start": {
                                              "line": 189,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 189,
                                              "column": 110
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 6906,
                                            "end": 6991,
                                            "loc": {
                                              "start": {
                                                "line": 189,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 189,
                                                "column": 109
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 6906,
                                              "end": 6915,
                                              "loc": {
                                                "start": {
                                                  "line": 189,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 189,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 6906,
                                                "end": 6911,
                                                "loc": {
                                                  "start": {
                                                    "line": 189,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 189,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 6912,
                                                "end": 6915,
                                                "loc": {
                                                  "start": {
                                                    "line": 189,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 189,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 6916,
                                                "end": 6945,
                                                "loc": {
                                                  "start": {
                                                    "line": 189,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 189,
                                                    "column": 63
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 6916,
                                                  "end": 6931,
                                                  "loc": {
                                                    "start": {
                                                      "line": 189,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 189,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 6916,
                                                    "end": 6926,
                                                    "loc": {
                                                      "start": {
                                                        "line": 189,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 189,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 6927,
                                                    "end": 6931,
                                                    "loc": {
                                                      "start": {
                                                        "line": 189,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 189,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 6932,
                                                  "end": 6945,
                                                  "loc": {
                                                    "start": {
                                                      "line": 189,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 189,
                                                      "column": 63
                                                    }
                                                  },
                                                  "name": "HORIZONTALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 6947,
                                                "end": 6956,
                                                "loc": {
                                                  "start": {
                                                    "line": 189,
                                                    "column": 65
                                                  },
                                                  "end": {
                                                    "line": 189,
                                                    "column": 74
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 6948,
                                                    "end": 6955,
                                                    "loc": {
                                                      "start": {
                                                        "line": 189,
                                                        "column": 66
                                                      },
                                                      "end": {
                                                        "line": 189,
                                                        "column": 73
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 6958,
                                                "end": 6990,
                                                "loc": {
                                                  "start": {
                                                    "line": 189,
                                                    "column": 76
                                                  },
                                                  "end": {
                                                    "line": 189,
                                                    "column": 108
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 6959,
                                                    "end": 6970,
                                                    "loc": {
                                                      "start": {
                                                        "line": 189,
                                                        "column": 77
                                                      },
                                                      "end": {
                                                        "line": 189,
                                                        "column": 88
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 6959,
                                                      "end": 6964,
                                                      "loc": {
                                                        "start": {
                                                          "line": 189,
                                                          "column": 77
                                                        },
                                                        "end": {
                                                          "line": 189,
                                                          "column": 82
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 6966,
                                                      "end": 6970,
                                                      "loc": {
                                                        "start": {
                                                          "line": 189,
                                                          "column": 84
                                                        },
                                                        "end": {
                                                          "line": 189,
                                                          "column": 88
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 6972,
                                                    "end": 6989,
                                                    "loc": {
                                                      "start": {
                                                        "line": 189,
                                                        "column": 90
                                                      },
                                                      "end": {
                                                        "line": 189,
                                                        "column": 107
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 6972,
                                                      "end": 6983,
                                                      "loc": {
                                                        "start": {
                                                          "line": 189,
                                                          "column": 90
                                                        },
                                                        "end": {
                                                          "line": 189,
                                                          "column": 101
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 6985,
                                                      "end": 6989,
                                                      "loc": {
                                                        "start": {
                                                          "line": 189,
                                                          "column": 103
                                                        },
                                                        "end": {
                                                          "line": 189,
                                                          "column": 107
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 7013,
                                        "end": 7167,
                                        "loc": {
                                          "start": {
                                            "line": 190,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 191,
                                            "column": 108
                                          }
                                        },
                                        "test": {
                                          "type": "BinaryExpression",
                                          "start": 7017,
                                          "end": 7057,
                                          "loc": {
                                            "start": {
                                              "line": 190,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 190,
                                              "column": 64
                                            }
                                          },
                                          "left": {
                                            "type": "CallExpression",
                                            "start": 7017,
                                            "end": 7032,
                                            "loc": {
                                              "start": {
                                                "line": 190,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 190,
                                                "column": 39
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7017,
                                              "end": 7025,
                                              "loc": {
                                                "start": {
                                                  "line": 190,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 190,
                                                  "column": 32
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7017,
                                                "end": 7021,
                                                "loc": {
                                                  "start": {
                                                    "line": 190,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 190,
                                                    "column": 28
                                                  }
                                                },
                                                "name": "Math"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7022,
                                                "end": 7025,
                                                "loc": {
                                                  "start": {
                                                    "line": 190,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 190,
                                                    "column": 32
                                                  }
                                                },
                                                "name": "abs"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7026,
                                                "end": 7031,
                                                "loc": {
                                                  "start": {
                                                    "line": 190,
                                                    "column": 33
                                                  },
                                                  "end": {
                                                    "line": 190,
                                                    "column": 38
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7026,
                                                  "end": 7029,
                                                  "loc": {
                                                    "start": {
                                                      "line": 190,
                                                      "column": 33
                                                    },
                                                    "end": {
                                                      "line": 190,
                                                      "column": 36
                                                    }
                                                  },
                                                  "name": "vec"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7030,
                                                  "end": 7031,
                                                  "loc": {
                                                    "start": {
                                                      "line": 190,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 190,
                                                      "column": 38
                                                    }
                                                  },
                                                  "name": "x"
                                                },
                                                "computed": false
                                              }
                                            ]
                                          },
                                          "operator": "<=",
                                          "right": {
                                            "type": "MemberExpression",
                                            "start": 7036,
                                            "end": 7057,
                                            "loc": {
                                              "start": {
                                                "line": 190,
                                                "column": 43
                                              },
                                              "end": {
                                                "line": 190,
                                                "column": 64
                                              }
                                            },
                                            "object": {
                                              "type": "ThisExpression",
                                              "start": 7036,
                                              "end": 7040,
                                              "loc": {
                                                "start": {
                                                  "line": 190,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 190,
                                                  "column": 47
                                                }
                                              }
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7041,
                                              "end": 7057,
                                              "loc": {
                                                "start": {
                                                  "line": 190,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 190,
                                                  "column": 64
                                                }
                                              },
                                              "name": "angularTolerance"
                                            },
                                            "computed": false
                                          }
                                        },
                                        "consequent": {
                                          "type": "ExpressionStatement",
                                          "start": 7083,
                                          "end": 7167,
                                          "loc": {
                                            "start": {
                                              "line": 191,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 191,
                                              "column": 108
                                            }
                                          },
                                          "expression": {
                                            "type": "CallExpression",
                                            "start": 7083,
                                            "end": 7166,
                                            "loc": {
                                              "start": {
                                                "line": 191,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 191,
                                                "column": 107
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7083,
                                              "end": 7092,
                                              "loc": {
                                                "start": {
                                                  "line": 191,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 191,
                                                  "column": 33
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7083,
                                                "end": 7088,
                                                "loc": {
                                                  "start": {
                                                    "line": 191,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 191,
                                                    "column": 29
                                                  }
                                                },
                                                "name": "adder"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7089,
                                                "end": 7092,
                                                "loc": {
                                                  "start": {
                                                    "line": 191,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 191,
                                                    "column": 33
                                                  }
                                                },
                                                "name": "add"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "MemberExpression",
                                                "start": 7093,
                                                "end": 7120,
                                                "loc": {
                                                  "start": {
                                                    "line": 191,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 191,
                                                    "column": 61
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 7093,
                                                  "end": 7108,
                                                  "loc": {
                                                    "start": {
                                                      "line": 191,
                                                      "column": 34
                                                    },
                                                    "end": {
                                                      "line": 191,
                                                      "column": 49
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "Identifier",
                                                    "start": 7093,
                                                    "end": 7103,
                                                    "loc": {
                                                      "start": {
                                                        "line": 191,
                                                        "column": 34
                                                      },
                                                      "end": {
                                                        "line": 191,
                                                        "column": 44
                                                      }
                                                    },
                                                    "name": "Constraint"
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 7104,
                                                    "end": 7108,
                                                    "loc": {
                                                      "start": {
                                                        "line": 191,
                                                        "column": 45
                                                      },
                                                      "end": {
                                                        "line": 191,
                                                        "column": 49
                                                      }
                                                    },
                                                    "name": "Type"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7109,
                                                  "end": 7120,
                                                  "loc": {
                                                    "start": {
                                                      "line": 191,
                                                      "column": 50
                                                    },
                                                    "end": {
                                                      "line": 191,
                                                      "column": 61
                                                    }
                                                  },
                                                  "name": "VERTICALITY"
                                                },
                                                "computed": false
                                              },
                                              {
                                                "type": "ArrayExpression",
                                                "start": 7122,
                                                "end": 7131,
                                                "loc": {
                                                  "start": {
                                                    "line": 191,
                                                    "column": 63
                                                  },
                                                  "end": {
                                                    "line": 191,
                                                    "column": 72
                                                  }
                                                },
                                                "elements": [
                                                  {
                                                    "type": "Identifier",
                                                    "start": 7123,
                                                    "end": 7130,
                                                    "loc": {
                                                      "start": {
                                                        "line": 191,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 191,
                                                        "column": 71
                                                      }
                                                    },
                                                    "name": "baseObj"
                                                  }
                                                ]
                                              },
                                              {
                                                "type": "ObjectExpression",
                                                "start": 7133,
                                                "end": 7165,
                                                "loc": {
                                                  "start": {
                                                    "line": 191,
                                                    "column": 74
                                                  },
                                                  "end": {
                                                    "line": 191,
                                                    "column": 106
                                                  }
                                                },
                                                "properties": [
                                                  {
                                                    "type": "Property",
                                                    "start": 7134,
                                                    "end": 7145,
                                                    "loc": {
                                                      "start": {
                                                        "line": 191,
                                                        "column": 75
                                                      },
                                                      "end": {
                                                        "line": 191,
                                                        "column": 86
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7134,
                                                      "end": 7139,
                                                      "loc": {
                                                        "start": {
                                                          "line": 191,
                                                          "column": 75
                                                        },
                                                        "end": {
                                                          "line": 191,
                                                          "column": 80
                                                        }
                                                      },
                                                      "name": "fixed"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7141,
                                                      "end": 7145,
                                                      "loc": {
                                                        "start": {
                                                          "line": 191,
                                                          "column": 82
                                                        },
                                                        "end": {
                                                          "line": 191,
                                                          "column": 86
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  },
                                                  {
                                                    "type": "Property",
                                                    "start": 7147,
                                                    "end": 7164,
                                                    "loc": {
                                                      "start": {
                                                        "line": 191,
                                                        "column": 88
                                                      },
                                                      "end": {
                                                        "line": 191,
                                                        "column": 105
                                                      }
                                                    },
                                                    "method": false,
                                                    "shorthand": false,
                                                    "computed": false,
                                                    "key": {
                                                      "type": "Identifier",
                                                      "start": 7147,
                                                      "end": 7158,
                                                      "loc": {
                                                        "start": {
                                                          "line": 191,
                                                          "column": 88
                                                        },
                                                        "end": {
                                                          "line": 191,
                                                          "column": 99
                                                        }
                                                      },
                                                      "name": "noVisualize"
                                                    },
                                                    "value": {
                                                      "type": "Literal",
                                                      "start": 7160,
                                                      "end": 7164,
                                                      "loc": {
                                                        "start": {
                                                          "line": 191,
                                                          "column": 101
                                                        },
                                                        "end": {
                                                          "line": 191,
                                                          "column": 105
                                                        }
                                                      },
                                                      "value": true,
                                                      "rawValue": true,
                                                      "raw": "true"
                                                    },
                                                    "kind": "init"
                                                  }
                                                ]
                                              }
                                            ]
                                          }
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null,
                                  "leadingComments": [
                                    {
                                      "type": "CommentLine",
                                      "value": "unit vector or zero",
                                      "start": 6734,
                                      "end": 6755,
                                      "loc": {
                                        "start": {
                                          "line": 186,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 186,
                                          "column": 69
                                        }
                                      },
                                      "range": [
                                        6734,
                                        6755
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            "alternate": null
                          },
                          {
                            "type": "ForOfStatement",
                            "start": 7213,
                            "end": 8814,
                            "loc": {
                              "start": {
                                "line": 195,
                                "column": 12
                              },
                              "end": {
                                "line": 218,
                                "column": 13
                              }
                            },
                            "left": {
                              "type": "VariableDeclaration",
                              "start": 7218,
                              "end": 7230,
                              "loc": {
                                "start": {
                                  "line": 195,
                                  "column": 17
                                },
                                "end": {
                                  "line": 195,
                                  "column": 29
                                }
                              },
                              "declarations": [
                                {
                                  "type": "VariableDeclarator",
                                  "start": 7222,
                                  "end": 7230,
                                  "loc": {
                                    "start": {
                                      "line": 195,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 195,
                                      "column": 29
                                    }
                                  },
                                  "id": {
                                    "type": "Identifier",
                                    "start": 7222,
                                    "end": 7230,
                                    "loc": {
                                      "start": {
                                        "line": 195,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 195,
                                        "column": 29
                                      }
                                    },
                                    "name": "otherObj"
                                  },
                                  "init": null
                                }
                              ],
                              "kind": "var"
                            },
                            "right": {
                              "type": "Identifier",
                              "start": 7234,
                              "end": 7244,
                              "loc": {
                                "start": {
                                  "line": 195,
                                  "column": 33
                                },
                                "end": {
                                  "line": 195,
                                  "column": 43
                                }
                              },
                              "name": "allObjects"
                            },
                            "body": {
                              "type": "BlockStatement",
                              "start": 7246,
                              "end": 8814,
                              "loc": {
                                "start": {
                                  "line": 195,
                                  "column": 45
                                },
                                "end": {
                                  "line": 218,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "IfStatement",
                                  "start": 7264,
                                  "end": 8800,
                                  "loc": {
                                    "start": {
                                      "line": 196,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 217,
                                      "column": 17
                                    }
                                  },
                                  "test": {
                                    "type": "LogicalExpression",
                                    "start": 7268,
                                    "end": 7412,
                                    "loc": {
                                      "start": {
                                        "line": 196,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 197,
                                        "column": 90
                                      }
                                    },
                                    "left": {
                                      "type": "LogicalExpression",
                                      "start": 7268,
                                      "end": 7321,
                                      "loc": {
                                        "start": {
                                          "line": 196,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 196,
                                          "column": 73
                                        }
                                      },
                                      "left": {
                                        "type": "BinaryExpression",
                                        "start": 7268,
                                        "end": 7292,
                                        "loc": {
                                          "start": {
                                            "line": 196,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 196,
                                            "column": 44
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7268,
                                          "end": 7275,
                                          "loc": {
                                            "start": {
                                              "line": 196,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 196,
                                              "column": 27
                                            }
                                          },
                                          "name": "baseObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7287,
                                          "end": 7292,
                                          "loc": {
                                            "start": {
                                              "line": 196,
                                              "column": 39
                                            },
                                            "end": {
                                              "line": 196,
                                              "column": 44
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      },
                                      "operator": "&&",
                                      "right": {
                                        "type": "BinaryExpression",
                                        "start": 7296,
                                        "end": 7321,
                                        "loc": {
                                          "start": {
                                            "line": 196,
                                            "column": 48
                                          },
                                          "end": {
                                            "line": 196,
                                            "column": 73
                                          }
                                        },
                                        "left": {
                                          "type": "Identifier",
                                          "start": 7296,
                                          "end": 7304,
                                          "loc": {
                                            "start": {
                                              "line": 196,
                                              "column": 48
                                            },
                                            "end": {
                                              "line": 196,
                                              "column": 56
                                            }
                                          },
                                          "name": "otherObj"
                                        },
                                        "operator": "instanceof",
                                        "right": {
                                          "type": "Identifier",
                                          "start": 7316,
                                          "end": 7321,
                                          "loc": {
                                            "start": {
                                              "line": 196,
                                              "column": 68
                                            },
                                            "end": {
                                              "line": 196,
                                              "column": 73
                                            }
                                          },
                                          "name": "Point"
                                        }
                                      }
                                    },
                                    "operator": "&&",
                                    "right": {
                                      "type": "BinaryExpression",
                                      "start": 7342,
                                      "end": 7412,
                                      "loc": {
                                        "start": {
                                          "line": 197,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 197,
                                          "column": 90
                                        }
                                      },
                                      "left": {
                                        "type": "CallExpression",
                                        "start": 7342,
                                        "end": 7388,
                                        "loc": {
                                          "start": {
                                            "line": 197,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 197,
                                            "column": 66
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 7342,
                                          "end": 7369,
                                          "loc": {
                                            "start": {
                                              "line": 197,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 197,
                                              "column": 47
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 7342,
                                            "end": 7358,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 36
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7342,
                                              "end": 7349,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 27
                                                }
                                              },
                                              "name": "baseObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7350,
                                              "end": 7358,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 28
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 36
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 7359,
                                            "end": 7369,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 47
                                              }
                                            },
                                            "name": "distanceTo"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "MemberExpression",
                                            "start": 7370,
                                            "end": 7387,
                                            "loc": {
                                              "start": {
                                                "line": 197,
                                                "column": 48
                                              },
                                              "end": {
                                                "line": 197,
                                                "column": 65
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7370,
                                              "end": 7378,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 48
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 56
                                                }
                                              },
                                              "name": "otherObj"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7379,
                                              "end": 7387,
                                              "loc": {
                                                "start": {
                                                  "line": 197,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 197,
                                                  "column": 65
                                                }
                                              },
                                              "name": "position"
                                            },
                                            "computed": false
                                          }
                                        ]
                                      },
                                      "operator": "<=",
                                      "right": {
                                        "type": "MemberExpression",
                                        "start": 7392,
                                        "end": 7412,
                                        "loc": {
                                          "start": {
                                            "line": 197,
                                            "column": 70
                                          },
                                          "end": {
                                            "line": 197,
                                            "column": 90
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 7392,
                                          "end": 7396,
                                          "loc": {
                                            "start": {
                                              "line": 197,
                                              "column": 70
                                            },
                                            "end": {
                                              "line": 197,
                                              "column": 74
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 7397,
                                          "end": 7412,
                                          "loc": {
                                            "start": {
                                              "line": 197,
                                              "column": 75
                                            },
                                            "end": {
                                              "line": 197,
                                              "column": 90
                                            }
                                          },
                                          "name": "linearTolerance"
                                        },
                                        "computed": false
                                      }
                                    }
                                  },
                                  "consequent": {
                                    "type": "BlockStatement",
                                    "start": 7414,
                                    "end": 8800,
                                    "loc": {
                                      "start": {
                                        "line": 197,
                                        "column": 92
                                      },
                                      "end": {
                                        "line": 217,
                                        "column": 17
                                      }
                                    },
                                    "body": [
                                      {
                                        "type": "ExpressionStatement",
                                        "start": 7496,
                                        "end": 7575,
                                        "loc": {
                                          "start": {
                                            "line": 199,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 199,
                                            "column": 99
                                          }
                                        },
                                        "expression": {
                                          "type": "CallExpression",
                                          "start": 7496,
                                          "end": 7574,
                                          "loc": {
                                            "start": {
                                              "line": 199,
                                              "column": 20
                                            },
                                            "end": {
                                              "line": 199,
                                              "column": 98
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 7496,
                                            "end": 7505,
                                            "loc": {
                                              "start": {
                                                "line": 199,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 199,
                                                "column": 29
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 7496,
                                              "end": 7501,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 25
                                                }
                                              },
                                              "name": "adder",
                                              "leadingComments": null
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 7502,
                                              "end": 7505,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 26
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 29
                                                }
                                              },
                                              "name": "add"
                                            },
                                            "computed": false,
                                            "leadingComments": null
                                          },
                                          "arguments": [
                                            {
                                              "type": "MemberExpression",
                                              "start": 7506,
                                              "end": 7531,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 30
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 55
                                                }
                                              },
                                              "object": {
                                                "type": "MemberExpression",
                                                "start": 7506,
                                                "end": 7521,
                                                "loc": {
                                                  "start": {
                                                    "line": 199,
                                                    "column": 30
                                                  },
                                                  "end": {
                                                    "line": 199,
                                                    "column": 45
                                                  }
                                                },
                                                "object": {
                                                  "type": "Identifier",
                                                  "start": 7506,
                                                  "end": 7516,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 30
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 40
                                                    }
                                                  },
                                                  "name": "Constraint"
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 7517,
                                                  "end": 7521,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 41
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 45
                                                    }
                                                  },
                                                  "name": "Type"
                                                },
                                                "computed": false
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7522,
                                                "end": 7531,
                                                "loc": {
                                                  "start": {
                                                    "line": 199,
                                                    "column": 46
                                                  },
                                                  "end": {
                                                    "line": 199,
                                                    "column": 55
                                                  }
                                                },
                                                "name": "INCIDENCE"
                                              },
                                              "computed": false
                                            },
                                            {
                                              "type": "ArrayExpression",
                                              "start": 7533,
                                              "end": 7552,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 57
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 76
                                                }
                                              },
                                              "elements": [
                                                {
                                                  "type": "Identifier",
                                                  "start": 7534,
                                                  "end": 7541,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 58
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 65
                                                    }
                                                  },
                                                  "name": "baseObj"
                                                },
                                                {
                                                  "type": "Identifier",
                                                  "start": 7543,
                                                  "end": 7551,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 67
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 75
                                                    }
                                                  },
                                                  "name": "otherObj"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "ObjectExpression",
                                              "start": 7554,
                                              "end": 7573,
                                              "loc": {
                                                "start": {
                                                  "line": 199,
                                                  "column": 78
                                                },
                                                "end": {
                                                  "line": 199,
                                                  "column": 97
                                                }
                                              },
                                              "properties": [
                                                {
                                                  "type": "Property",
                                                  "start": 7555,
                                                  "end": 7572,
                                                  "loc": {
                                                    "start": {
                                                      "line": 199,
                                                      "column": 79
                                                    },
                                                    "end": {
                                                      "line": 199,
                                                      "column": 96
                                                    }
                                                  },
                                                  "method": false,
                                                  "shorthand": false,
                                                  "computed": false,
                                                  "key": {
                                                    "type": "Identifier",
                                                    "start": 7555,
                                                    "end": 7566,
                                                    "loc": {
                                                      "start": {
                                                        "line": 199,
                                                        "column": 79
                                                      },
                                                      "end": {
                                                        "line": 199,
                                                        "column": 90
                                                      }
                                                    },
                                                    "name": "noVisualize"
                                                  },
                                                  "value": {
                                                    "type": "Literal",
                                                    "start": 7568,
                                                    "end": 7572,
                                                    "loc": {
                                                      "start": {
                                                        "line": 199,
                                                        "column": 92
                                                      },
                                                      "end": {
                                                        "line": 199,
                                                        "column": 96
                                                      }
                                                    },
                                                    "value": true,
                                                    "rawValue": true,
                                                    "raw": "true"
                                                  },
                                                  "kind": "init"
                                                }
                                              ]
                                            }
                                          ],
                                          "leadingComments": null
                                        },
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied incidence of points",
                                            "start": 7436,
                                            "end": 7475,
                                            "loc": {
                                              "start": {
                                                "line": 198,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 198,
                                                "column": 59
                                              }
                                            },
                                            "range": [
                                              7436,
                                              7475
                                            ]
                                          }
                                        ],
                                        "trailingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7597,
                                            "end": 7647,
                                            "loc": {
                                              "start": {
                                                "line": 201,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 201,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7597,
                                              7647
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "VariableDeclaration",
                                        "start": 7668,
                                        "end": 7725,
                                        "loc": {
                                          "start": {
                                            "line": 202,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 202,
                                            "column": 77
                                          }
                                        },
                                        "declarations": [
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 7672,
                                            "end": 7696,
                                            "loc": {
                                              "start": {
                                                "line": 202,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 202,
                                                "column": 48
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 7672,
                                              "end": 7679,
                                              "loc": {
                                                "start": {
                                                  "line": 202,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 202,
                                                  "column": 31
                                                }
                                              },
                                              "name": "basePar",
                                              "leadingComments": null
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 7682,
                                              "end": 7696,
                                              "loc": {
                                                "start": {
                                                  "line": 202,
                                                  "column": 34
                                                },
                                                "end": {
                                                  "line": 202,
                                                  "column": 48
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7682,
                                                "end": 7689,
                                                "loc": {
                                                  "start": {
                                                    "line": 202,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 202,
                                                    "column": 41
                                                  }
                                                },
                                                "name": "baseObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7690,
                                                "end": 7696,
                                                "loc": {
                                                  "start": {
                                                    "line": 202,
                                                    "column": 42
                                                  },
                                                  "end": {
                                                    "line": 202,
                                                    "column": 48
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            },
                                            "leadingComments": null
                                          },
                                          {
                                            "type": "VariableDeclarator",
                                            "start": 7698,
                                            "end": 7724,
                                            "loc": {
                                              "start": {
                                                "line": 202,
                                                "column": 50
                                              },
                                              "end": {
                                                "line": 202,
                                                "column": 76
                                              }
                                            },
                                            "id": {
                                              "type": "Identifier",
                                              "start": 7698,
                                              "end": 7706,
                                              "loc": {
                                                "start": {
                                                  "line": 202,
                                                  "column": 50
                                                },
                                                "end": {
                                                  "line": 202,
                                                  "column": 58
                                                }
                                              },
                                              "name": "otherPar"
                                            },
                                            "init": {
                                              "type": "MemberExpression",
                                              "start": 7709,
                                              "end": 7724,
                                              "loc": {
                                                "start": {
                                                  "line": 202,
                                                  "column": 61
                                                },
                                                "end": {
                                                  "line": 202,
                                                  "column": 76
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7709,
                                                "end": 7717,
                                                "loc": {
                                                  "start": {
                                                    "line": 202,
                                                    "column": 61
                                                  },
                                                  "end": {
                                                    "line": 202,
                                                    "column": 69
                                                  }
                                                },
                                                "name": "otherObj"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7718,
                                                "end": 7724,
                                                "loc": {
                                                  "start": {
                                                    "line": 202,
                                                    "column": 70
                                                  },
                                                  "end": {
                                                    "line": 202,
                                                    "column": 76
                                                  }
                                                },
                                                "name": "parent"
                                              },
                                              "computed": false
                                            }
                                          }
                                        ],
                                        "kind": "var",
                                        "leadingComments": [
                                          {
                                            "type": "CommentLine",
                                            "value": " generate implied tangency of touching endpoints",
                                            "start": 7597,
                                            "end": 7647,
                                            "loc": {
                                              "start": {
                                                "line": 201,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 201,
                                                "column": 70
                                              }
                                            },
                                            "range": [
                                              7597,
                                              7647
                                            ]
                                          }
                                        ]
                                      },
                                      {
                                        "type": "IfStatement",
                                        "start": 7746,
                                        "end": 8782,
                                        "loc": {
                                          "start": {
                                            "line": 203,
                                            "column": 20
                                          },
                                          "end": {
                                            "line": 216,
                                            "column": 21
                                          }
                                        },
                                        "test": {
                                          "type": "LogicalExpression",
                                          "start": 7750,
                                          "end": 7896,
                                          "loc": {
                                            "start": {
                                              "line": 203,
                                              "column": 24
                                            },
                                            "end": {
                                              "line": 204,
                                              "column": 72
                                            }
                                          },
                                          "left": {
                                            "type": "LogicalExpression",
                                            "start": 7750,
                                            "end": 7867,
                                            "loc": {
                                              "start": {
                                                "line": 203,
                                                "column": 24
                                              },
                                              "end": {
                                                "line": 204,
                                                "column": 43
                                              }
                                            },
                                            "left": {
                                              "type": "LogicalExpression",
                                              "start": 7750,
                                              "end": 7823,
                                              "loc": {
                                                "start": {
                                                  "line": 203,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 203,
                                                  "column": 97
                                                }
                                              },
                                              "left": {
                                                "type": "BinaryExpression",
                                                "start": 7750,
                                                "end": 7784,
                                                "loc": {
                                                  "start": {
                                                    "line": 203,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 203,
                                                    "column": 58
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 7750,
                                                  "end": 7757,
                                                  "loc": {
                                                    "start": {
                                                      "line": 203,
                                                      "column": 24
                                                    },
                                                    "end": {
                                                      "line": 203,
                                                      "column": 31
                                                    }
                                                  },
                                                  "name": "basePar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 7769,
                                                  "end": 7784,
                                                  "loc": {
                                                    "start": {
                                                      "line": 203,
                                                      "column": 43
                                                    },
                                                    "end": {
                                                      "line": 203,
                                                      "column": 58
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              },
                                              "operator": "&&",
                                              "right": {
                                                "type": "BinaryExpression",
                                                "start": 7788,
                                                "end": 7823,
                                                "loc": {
                                                  "start": {
                                                    "line": 203,
                                                    "column": 62
                                                  },
                                                  "end": {
                                                    "line": 203,
                                                    "column": 97
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 7788,
                                                  "end": 7796,
                                                  "loc": {
                                                    "start": {
                                                      "line": 203,
                                                      "column": 62
                                                    },
                                                    "end": {
                                                      "line": 203,
                                                      "column": 70
                                                    }
                                                  },
                                                  "name": "otherPar"
                                                },
                                                "operator": "instanceof",
                                                "right": {
                                                  "type": "Identifier",
                                                  "start": 7808,
                                                  "end": 7823,
                                                  "loc": {
                                                    "start": {
                                                      "line": 203,
                                                      "column": 82
                                                    },
                                                    "end": {
                                                      "line": 203,
                                                      "column": 97
                                                    }
                                                  },
                                                  "name": "GeometricObject"
                                                }
                                              }
                                            },
                                            "operator": "&&",
                                            "right": {
                                              "type": "BinaryExpression",
                                              "start": 7848,
                                              "end": 7867,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 43
                                                }
                                              },
                                              "left": {
                                                "type": "Identifier",
                                                "start": 7848,
                                                "end": 7855,
                                                "loc": {
                                                  "start": {
                                                    "line": 204,
                                                    "column": 24
                                                  },
                                                  "end": {
                                                    "line": 204,
                                                    "column": 31
                                                  }
                                                },
                                                "name": "basePar"
                                              },
                                              "operator": "!=",
                                              "right": {
                                                "type": "Identifier",
                                                "start": 7859,
                                                "end": 7867,
                                                "loc": {
                                                  "start": {
                                                    "line": 204,
                                                    "column": 35
                                                  },
                                                  "end": {
                                                    "line": 204,
                                                    "column": 43
                                                  }
                                                },
                                                "name": "otherPar"
                                              }
                                            }
                                          },
                                          "operator": "&&",
                                          "right": {
                                            "type": "CallExpression",
                                            "start": 7871,
                                            "end": 7896,
                                            "loc": {
                                              "start": {
                                                "line": 204,
                                                "column": 47
                                              },
                                              "end": {
                                                "line": 204,
                                                "column": 72
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 7871,
                                              "end": 7887,
                                              "loc": {
                                                "start": {
                                                  "line": 204,
                                                  "column": 47
                                                },
                                                "end": {
                                                  "line": 204,
                                                  "column": 63
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 7871,
                                                "end": 7883,
                                                "loc": {
                                                  "start": {
                                                    "line": 204,
                                                    "column": 47
                                                  },
                                                  "end": {
                                                    "line": 204,
                                                    "column": 59
                                                  }
                                                },
                                                "name": "relatedToSet"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 7884,
                                                "end": 7887,
                                                "loc": {
                                                  "start": {
                                                    "line": 204,
                                                    "column": 60
                                                  },
                                                  "end": {
                                                    "line": 204,
                                                    "column": 63
                                                  }
                                                },
                                                "name": "has"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "Identifier",
                                                "start": 7888,
                                                "end": 7895,
                                                "loc": {
                                                  "start": {
                                                    "line": 204,
                                                    "column": 64
                                                  },
                                                  "end": {
                                                    "line": 204,
                                                    "column": 71
                                                  }
                                                },
                                                "name": "basePar"
                                              }
                                            ]
                                          }
                                        },
                                        "consequent": {
                                          "type": "BlockStatement",
                                          "start": 7898,
                                          "end": 8782,
                                          "loc": {
                                            "start": {
                                              "line": 204,
                                              "column": 74
                                            },
                                            "end": {
                                              "line": 216,
                                              "column": 21
                                            }
                                          },
                                          "body": [
                                            {
                                              "type": "IfStatement",
                                              "start": 7924,
                                              "end": 8760,
                                              "loc": {
                                                "start": {
                                                  "line": 205,
                                                  "column": 24
                                                },
                                                "end": {
                                                  "line": 215,
                                                  "column": 25
                                                }
                                              },
                                              "test": {
                                                "type": "LogicalExpression",
                                                "start": 7928,
                                                "end": 8010,
                                                "loc": {
                                                  "start": {
                                                    "line": 205,
                                                    "column": 28
                                                  },
                                                  "end": {
                                                    "line": 205,
                                                    "column": 110
                                                  }
                                                },
                                                "left": {
                                                  "type": "BinaryExpression",
                                                  "start": 7928,
                                                  "end": 7966,
                                                  "loc": {
                                                    "start": {
                                                      "line": 205,
                                                      "column": 28
                                                    },
                                                    "end": {
                                                      "line": 205,
                                                      "column": 66
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 7928,
                                                    "end": 7959,
                                                    "loc": {
                                                      "start": {
                                                        "line": 205,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 205,
                                                        "column": 59
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 7928,
                                                      "end": 7950,
                                                      "loc": {
                                                        "start": {
                                                          "line": 205,
                                                          "column": 28
                                                        },
                                                        "end": {
                                                          "line": 205,
                                                          "column": 50
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 7928,
                                                        "end": 7942,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 28
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 42
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 7928,
                                                          "end": 7935,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 28
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 35
                                                            }
                                                          },
                                                          "name": "basePar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 7936,
                                                          "end": 7942,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 36
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 42
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 7943,
                                                        "end": 7950,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 43
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 50
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 7951,
                                                        "end": 7958,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 51
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 58
                                                          }
                                                        },
                                                        "name": "baseObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 7964,
                                                    "end": 7966,
                                                    "loc": {
                                                      "start": {
                                                        "line": 205,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 205,
                                                        "column": 66
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 7965,
                                                      "end": 7966,
                                                      "loc": {
                                                        "start": {
                                                          "line": 205,
                                                          "column": 65
                                                        },
                                                        "end": {
                                                          "line": 205,
                                                          "column": 66
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                },
                                                "operator": "&&",
                                                "right": {
                                                  "type": "BinaryExpression",
                                                  "start": 7970,
                                                  "end": 8010,
                                                  "loc": {
                                                    "start": {
                                                      "line": 205,
                                                      "column": 70
                                                    },
                                                    "end": {
                                                      "line": 205,
                                                      "column": 110
                                                    }
                                                  },
                                                  "left": {
                                                    "type": "CallExpression",
                                                    "start": 7970,
                                                    "end": 8003,
                                                    "loc": {
                                                      "start": {
                                                        "line": 205,
                                                        "column": 70
                                                      },
                                                      "end": {
                                                        "line": 205,
                                                        "column": 103
                                                      }
                                                    },
                                                    "callee": {
                                                      "type": "MemberExpression",
                                                      "start": 7970,
                                                      "end": 7993,
                                                      "loc": {
                                                        "start": {
                                                          "line": 205,
                                                          "column": 70
                                                        },
                                                        "end": {
                                                          "line": 205,
                                                          "column": 93
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "MemberExpression",
                                                        "start": 7970,
                                                        "end": 7985,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 70
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 85
                                                          }
                                                        },
                                                        "object": {
                                                          "type": "Identifier",
                                                          "start": 7970,
                                                          "end": 7978,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 70
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 78
                                                            }
                                                          },
                                                          "name": "otherPar"
                                                        },
                                                        "property": {
                                                          "type": "Identifier",
                                                          "start": 7979,
                                                          "end": 7985,
                                                          "loc": {
                                                            "start": {
                                                              "line": 205,
                                                              "column": 79
                                                            },
                                                            "end": {
                                                              "line": 205,
                                                              "column": 85
                                                            }
                                                          },
                                                          "name": "points"
                                                        },
                                                        "computed": false
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 7986,
                                                        "end": 7993,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 86
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 93
                                                          }
                                                        },
                                                        "name": "indexOf"
                                                      },
                                                      "computed": false
                                                    },
                                                    "arguments": [
                                                      {
                                                        "type": "Identifier",
                                                        "start": 7994,
                                                        "end": 8002,
                                                        "loc": {
                                                          "start": {
                                                            "line": 205,
                                                            "column": 94
                                                          },
                                                          "end": {
                                                            "line": 205,
                                                            "column": 102
                                                          }
                                                        },
                                                        "name": "otherObj"
                                                      }
                                                    ]
                                                  },
                                                  "operator": "!==",
                                                  "right": {
                                                    "type": "UnaryExpression",
                                                    "start": 8008,
                                                    "end": 8010,
                                                    "loc": {
                                                      "start": {
                                                        "line": 205,
                                                        "column": 108
                                                      },
                                                      "end": {
                                                        "line": 205,
                                                        "column": 110
                                                      }
                                                    },
                                                    "operator": "-",
                                                    "prefix": true,
                                                    "argument": {
                                                      "type": "Literal",
                                                      "start": 8009,
                                                      "end": 8010,
                                                      "loc": {
                                                        "start": {
                                                          "line": 205,
                                                          "column": 109
                                                        },
                                                        "end": {
                                                          "line": 205,
                                                          "column": 110
                                                        }
                                                      },
                                                      "value": 1,
                                                      "rawValue": 1,
                                                      "raw": "1"
                                                    }
                                                  }
                                                }
                                              },
                                              "consequent": {
                                                "type": "BlockStatement",
                                                "start": 8012,
                                                "end": 8760,
                                                "loc": {
                                                  "start": {
                                                    "line": 205,
                                                    "column": 112
                                                  },
                                                  "end": {
                                                    "line": 215,
                                                    "column": 25
                                                  }
                                                },
                                                "body": [
                                                  {
                                                    "type": "VariableDeclaration",
                                                    "start": 8042,
                                                    "end": 8176,
                                                    "loc": {
                                                      "start": {
                                                        "line": 206,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 207,
                                                        "column": 82
                                                      }
                                                    },
                                                    "declarations": [
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 8046,
                                                        "end": 8092,
                                                        "loc": {
                                                          "start": {
                                                            "line": 206,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 206,
                                                            "column": 78
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 8046,
                                                          "end": 8053,
                                                          "loc": {
                                                            "start": {
                                                              "line": 206,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 206,
                                                              "column": 39
                                                            }
                                                          },
                                                          "name": "baseDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 8056,
                                                          "end": 8092,
                                                          "loc": {
                                                            "start": {
                                                              "line": 206,
                                                              "column": 42
                                                            },
                                                            "end": {
                                                              "line": 206,
                                                              "column": 78
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8056,
                                                            "end": 8074,
                                                            "loc": {
                                                              "start": {
                                                                "line": 206,
                                                                "column": 42
                                                              },
                                                              "end": {
                                                                "line": 206,
                                                                "column": 60
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8056,
                                                              "end": 8063,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 206,
                                                                  "column": 42
                                                                },
                                                                "end": {
                                                                  "line": 206,
                                                                  "column": 49
                                                                }
                                                              },
                                                              "name": "basePar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8064,
                                                              "end": 8074,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 206,
                                                                  "column": 50
                                                                },
                                                                "end": {
                                                                  "line": 206,
                                                                  "column": 60
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8075,
                                                              "end": 8091,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 206,
                                                                  "column": 61
                                                                },
                                                                "end": {
                                                                  "line": 206,
                                                                  "column": 77
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8075,
                                                                "end": 8082,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 206,
                                                                    "column": 61
                                                                  },
                                                                  "end": {
                                                                    "line": 206,
                                                                    "column": 68
                                                                  }
                                                                },
                                                                "name": "baseObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8083,
                                                                "end": 8091,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 206,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 206,
                                                                    "column": 77
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      {
                                                        "type": "VariableDeclarator",
                                                        "start": 8126,
                                                        "end": 8175,
                                                        "loc": {
                                                          "start": {
                                                            "line": 207,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 207,
                                                            "column": 81
                                                          }
                                                        },
                                                        "id": {
                                                          "type": "Identifier",
                                                          "start": 8126,
                                                          "end": 8134,
                                                          "loc": {
                                                            "start": {
                                                              "line": 207,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 207,
                                                              "column": 40
                                                            }
                                                          },
                                                          "name": "otherDir"
                                                        },
                                                        "init": {
                                                          "type": "CallExpression",
                                                          "start": 8137,
                                                          "end": 8175,
                                                          "loc": {
                                                            "start": {
                                                              "line": 207,
                                                              "column": 43
                                                            },
                                                            "end": {
                                                              "line": 207,
                                                              "column": 81
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8137,
                                                            "end": 8156,
                                                            "loc": {
                                                              "start": {
                                                                "line": 207,
                                                                "column": 43
                                                              },
                                                              "end": {
                                                                "line": 207,
                                                                "column": 62
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8137,
                                                              "end": 8145,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 207,
                                                                  "column": 43
                                                                },
                                                                "end": {
                                                                  "line": 207,
                                                                  "column": 51
                                                                }
                                                              },
                                                              "name": "otherPar"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8146,
                                                              "end": 8156,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 207,
                                                                  "column": 52
                                                                },
                                                                "end": {
                                                                  "line": 207,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "name": "getTangent"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8157,
                                                              "end": 8174,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 207,
                                                                  "column": 63
                                                                },
                                                                "end": {
                                                                  "line": 207,
                                                                  "column": 80
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8157,
                                                                "end": 8165,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 207,
                                                                    "column": 63
                                                                  },
                                                                  "end": {
                                                                    "line": 207,
                                                                    "column": 71
                                                                  }
                                                                },
                                                                "name": "otherObj"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8166,
                                                                "end": 8174,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 207,
                                                                    "column": 72
                                                                  },
                                                                  "end": {
                                                                    "line": 207,
                                                                    "column": 80
                                                                  }
                                                                },
                                                                "name": "position"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        }
                                                      }
                                                    ],
                                                    "kind": "var"
                                                  },
                                                  {
                                                    "type": "IfStatement",
                                                    "start": 8205,
                                                    "end": 8734,
                                                    "loc": {
                                                      "start": {
                                                        "line": 208,
                                                        "column": 28
                                                      },
                                                      "end": {
                                                        "line": 214,
                                                        "column": 29
                                                      }
                                                    },
                                                    "test": {
                                                      "type": "LogicalExpression",
                                                      "start": 8209,
                                                      "end": 8385,
                                                      "loc": {
                                                        "start": {
                                                          "line": 208,
                                                          "column": 32
                                                        },
                                                        "end": {
                                                          "line": 209,
                                                          "column": 92
                                                        }
                                                      },
                                                      "left": {
                                                        "type": "LogicalExpression",
                                                        "start": 8209,
                                                        "end": 8292,
                                                        "loc": {
                                                          "start": {
                                                            "line": 208,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 208,
                                                            "column": 115
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "BinaryExpression",
                                                          "start": 8209,
                                                          "end": 8248,
                                                          "loc": {
                                                            "start": {
                                                              "line": 208,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 208,
                                                              "column": 71
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8209,
                                                            "end": 8225,
                                                            "loc": {
                                                              "start": {
                                                                "line": 208,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 208,
                                                                "column": 48
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8209,
                                                              "end": 8223,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 46
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8209,
                                                                "end": 8216,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 208,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 208,
                                                                    "column": 39
                                                                  }
                                                                },
                                                                "name": "baseDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8217,
                                                                "end": 8223,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 208,
                                                                    "column": 40
                                                                  },
                                                                  "end": {
                                                                    "line": 208,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8228,
                                                            "end": 8248,
                                                            "loc": {
                                                              "start": {
                                                                "line": 208,
                                                                "column": 51
                                                              },
                                                              "end": {
                                                                "line": 208,
                                                                "column": 71
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8228,
                                                              "end": 8232,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 51
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 55
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8233,
                                                              "end": 8248,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 56
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 71
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        },
                                                        "operator": "&&",
                                                        "right": {
                                                          "type": "BinaryExpression",
                                                          "start": 8252,
                                                          "end": 8292,
                                                          "loc": {
                                                            "start": {
                                                              "line": 208,
                                                              "column": 75
                                                            },
                                                            "end": {
                                                              "line": 208,
                                                              "column": 115
                                                            }
                                                          },
                                                          "left": {
                                                            "type": "CallExpression",
                                                            "start": 8252,
                                                            "end": 8269,
                                                            "loc": {
                                                              "start": {
                                                                "line": 208,
                                                                "column": 75
                                                              },
                                                              "end": {
                                                                "line": 208,
                                                                "column": 92
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8252,
                                                              "end": 8267,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 75
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 90
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8252,
                                                                "end": 8260,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 208,
                                                                    "column": 75
                                                                  },
                                                                  "end": {
                                                                    "line": 208,
                                                                    "column": 83
                                                                  }
                                                                },
                                                                "name": "otherDir"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8261,
                                                                "end": 8267,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 208,
                                                                    "column": 84
                                                                  },
                                                                  "end": {
                                                                    "line": 208,
                                                                    "column": 90
                                                                  }
                                                                },
                                                                "name": "length"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": []
                                                          },
                                                          "operator": ">",
                                                          "right": {
                                                            "type": "MemberExpression",
                                                            "start": 8272,
                                                            "end": 8292,
                                                            "loc": {
                                                              "start": {
                                                                "line": 208,
                                                                "column": 95
                                                              },
                                                              "end": {
                                                                "line": 208,
                                                                "column": 115
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "ThisExpression",
                                                              "start": 8272,
                                                              "end": 8276,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 95
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 99
                                                                }
                                                              }
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8277,
                                                              "end": 8292,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 208,
                                                                  "column": 100
                                                                },
                                                                "end": {
                                                                  "line": 208,
                                                                  "column": 115
                                                                }
                                                              },
                                                              "name": "linearTolerance"
                                                            },
                                                            "computed": false
                                                          }
                                                        }
                                                      },
                                                      "operator": "&&",
                                                      "right": {
                                                        "type": "BinaryExpression",
                                                        "start": 8325,
                                                        "end": 8385,
                                                        "loc": {
                                                          "start": {
                                                            "line": 209,
                                                            "column": 32
                                                          },
                                                          "end": {
                                                            "line": 209,
                                                            "column": 92
                                                          }
                                                        },
                                                        "left": {
                                                          "type": "CallExpression",
                                                          "start": 8325,
                                                          "end": 8360,
                                                          "loc": {
                                                            "start": {
                                                              "line": 209,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 209,
                                                              "column": 67
                                                            }
                                                          },
                                                          "callee": {
                                                            "type": "MemberExpression",
                                                            "start": 8325,
                                                            "end": 8333,
                                                            "loc": {
                                                              "start": {
                                                                "line": 209,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 209,
                                                                "column": 40
                                                              }
                                                            },
                                                            "object": {
                                                              "type": "Identifier",
                                                              "start": 8325,
                                                              "end": 8329,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 209,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 209,
                                                                  "column": 36
                                                                }
                                                              },
                                                              "name": "Math"
                                                            },
                                                            "property": {
                                                              "type": "Identifier",
                                                              "start": 8330,
                                                              "end": 8333,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 209,
                                                                  "column": 37
                                                                },
                                                                "end": {
                                                                  "line": 209,
                                                                  "column": 40
                                                                }
                                                              },
                                                              "name": "abs"
                                                            },
                                                            "computed": false
                                                          },
                                                          "arguments": [
                                                            {
                                                              "type": "MemberExpression",
                                                              "start": 8334,
                                                              "end": 8359,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 209,
                                                                  "column": 41
                                                                },
                                                                "end": {
                                                                  "line": 209,
                                                                  "column": 66
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "CallExpression",
                                                                "start": 8334,
                                                                "end": 8357,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 41
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 64
                                                                  }
                                                                },
                                                                "callee": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8334,
                                                                  "end": 8347,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 209,
                                                                      "column": 41
                                                                    },
                                                                    "end": {
                                                                      "line": 209,
                                                                      "column": 54
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "Identifier",
                                                                    "start": 8334,
                                                                    "end": 8341,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 41
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 48
                                                                      }
                                                                    },
                                                                    "name": "baseDir"
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8342,
                                                                    "end": 8347,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 54
                                                                      }
                                                                    },
                                                                    "name": "cross"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "arguments": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8348,
                                                                    "end": 8356,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 209,
                                                                        "column": 55
                                                                      },
                                                                      "end": {
                                                                        "line": 209,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "otherDir"
                                                                  }
                                                                ]
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8358,
                                                                "end": 8359,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 209,
                                                                    "column": 65
                                                                  },
                                                                  "end": {
                                                                    "line": 209,
                                                                    "column": 66
                                                                  }
                                                                },
                                                                "name": "z"
                                                              },
                                                              "computed": false
                                                            }
                                                          ]
                                                        },
                                                        "operator": "<=",
                                                        "right": {
                                                          "type": "MemberExpression",
                                                          "start": 8364,
                                                          "end": 8385,
                                                          "loc": {
                                                            "start": {
                                                              "line": 209,
                                                              "column": 71
                                                            },
                                                            "end": {
                                                              "line": 209,
                                                              "column": 92
                                                            }
                                                          },
                                                          "object": {
                                                            "type": "ThisExpression",
                                                            "start": 8364,
                                                            "end": 8368,
                                                            "loc": {
                                                              "start": {
                                                                "line": 209,
                                                                "column": 71
                                                              },
                                                              "end": {
                                                                "line": 209,
                                                                "column": 75
                                                              }
                                                            }
                                                          },
                                                          "property": {
                                                            "type": "Identifier",
                                                            "start": 8369,
                                                            "end": 8385,
                                                            "loc": {
                                                              "start": {
                                                                "line": 209,
                                                                "column": 76
                                                              },
                                                              "end": {
                                                                "line": 209,
                                                                "column": 92
                                                              }
                                                            },
                                                            "name": "angularTolerance"
                                                          },
                                                          "computed": false
                                                        }
                                                      }
                                                    },
                                                    "consequent": {
                                                      "type": "BlockStatement",
                                                      "start": 8387,
                                                      "end": 8734,
                                                      "loc": {
                                                        "start": {
                                                          "line": 209,
                                                          "column": 94
                                                        },
                                                        "end": {
                                                          "line": 214,
                                                          "column": 29
                                                        }
                                                      },
                                                      "body": [
                                                        {
                                                          "type": "VariableDeclaration",
                                                          "start": 8421,
                                                          "end": 8613,
                                                          "loc": {
                                                            "start": {
                                                              "line": 210,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 212,
                                                              "column": 63
                                                            }
                                                          },
                                                          "declarations": [
                                                            {
                                                              "type": "VariableDeclarator",
                                                              "start": 8425,
                                                              "end": 8612,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 210,
                                                                  "column": 36
                                                                },
                                                                "end": {
                                                                  "line": 212,
                                                                  "column": 62
                                                                }
                                                              },
                                                              "id": {
                                                                "type": "Identifier",
                                                                "start": 8425,
                                                                "end": 8429,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 210,
                                                                    "column": 36
                                                                  },
                                                                  "end": {
                                                                    "line": 210,
                                                                    "column": 40
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              "init": {
                                                                "type": "ConditionalExpression",
                                                                "start": 8432,
                                                                "end": 8612,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 210,
                                                                    "column": 43
                                                                  },
                                                                  "end": {
                                                                    "line": 212,
                                                                    "column": 62
                                                                  }
                                                                },
                                                                "test": {
                                                                  "type": "LogicalExpression",
                                                                  "start": 8433,
                                                                  "end": 8484,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 210,
                                                                      "column": 44
                                                                    },
                                                                    "end": {
                                                                      "line": 210,
                                                                      "column": 95
                                                                    }
                                                                  },
                                                                  "left": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8433,
                                                                    "end": 8456,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 210,
                                                                        "column": 44
                                                                      },
                                                                      "end": {
                                                                        "line": 210,
                                                                        "column": 67
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8433,
                                                                      "end": 8440,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 210,
                                                                          "column": 44
                                                                        },
                                                                        "end": {
                                                                          "line": 210,
                                                                          "column": 51
                                                                        }
                                                                      },
                                                                      "name": "basePar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8452,
                                                                      "end": 8456,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 210,
                                                                          "column": 63
                                                                        },
                                                                        "end": {
                                                                          "line": 210,
                                                                          "column": 67
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "operator": "&&",
                                                                  "right": {
                                                                    "type": "BinaryExpression",
                                                                    "start": 8460,
                                                                    "end": 8484,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 210,
                                                                        "column": 71
                                                                      },
                                                                      "end": {
                                                                        "line": 210,
                                                                        "column": 95
                                                                      }
                                                                    },
                                                                    "left": {
                                                                      "type": "Identifier",
                                                                      "start": 8460,
                                                                      "end": 8468,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 210,
                                                                          "column": 71
                                                                        },
                                                                        "end": {
                                                                          "line": 210,
                                                                          "column": 79
                                                                        }
                                                                      },
                                                                      "name": "otherPar"
                                                                    },
                                                                    "operator": "instanceof",
                                                                    "right": {
                                                                      "type": "Identifier",
                                                                      "start": 8480,
                                                                      "end": 8484,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 210,
                                                                          "column": 91
                                                                        },
                                                                        "end": {
                                                                          "line": 210,
                                                                          "column": 95
                                                                        }
                                                                      },
                                                                      "name": "Line"
                                                                    }
                                                                  },
                                                                  "parenthesizedExpression": true
                                                                },
                                                                "consequent": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8524,
                                                                  "end": 8549,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 211,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 211,
                                                                      "column": 63
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8524,
                                                                    "end": 8539,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 211,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 211,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8524,
                                                                      "end": 8534,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 211,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 211,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8535,
                                                                      "end": 8539,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 211,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 211,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8540,
                                                                    "end": 8549,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 211,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 211,
                                                                        "column": 63
                                                                      }
                                                                    },
                                                                    "name": "INCIDENCE"
                                                                  },
                                                                  "computed": false
                                                                },
                                                                "alternate": {
                                                                  "type": "MemberExpression",
                                                                  "start": 8588,
                                                                  "end": 8612,
                                                                  "loc": {
                                                                    "start": {
                                                                      "line": 212,
                                                                      "column": 38
                                                                    },
                                                                    "end": {
                                                                      "line": 212,
                                                                      "column": 62
                                                                    }
                                                                  },
                                                                  "object": {
                                                                    "type": "MemberExpression",
                                                                    "start": 8588,
                                                                    "end": 8603,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 212,
                                                                        "column": 38
                                                                      },
                                                                      "end": {
                                                                        "line": 212,
                                                                        "column": 53
                                                                      }
                                                                    },
                                                                    "object": {
                                                                      "type": "Identifier",
                                                                      "start": 8588,
                                                                      "end": 8598,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 212,
                                                                          "column": 38
                                                                        },
                                                                        "end": {
                                                                          "line": 212,
                                                                          "column": 48
                                                                        }
                                                                      },
                                                                      "name": "Constraint"
                                                                    },
                                                                    "property": {
                                                                      "type": "Identifier",
                                                                      "start": 8599,
                                                                      "end": 8603,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 212,
                                                                          "column": 49
                                                                        },
                                                                        "end": {
                                                                          "line": 212,
                                                                          "column": 53
                                                                        }
                                                                      },
                                                                      "name": "Type"
                                                                    },
                                                                    "computed": false
                                                                  },
                                                                  "property": {
                                                                    "type": "Identifier",
                                                                    "start": 8604,
                                                                    "end": 8612,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 212,
                                                                        "column": 54
                                                                      },
                                                                      "end": {
                                                                        "line": 212,
                                                                        "column": 62
                                                                      }
                                                                    },
                                                                    "name": "TANGENCY"
                                                                  },
                                                                  "computed": false
                                                                }
                                                              }
                                                            }
                                                          ],
                                                          "kind": "var"
                                                        },
                                                        {
                                                          "type": "ExpressionStatement",
                                                          "start": 8646,
                                                          "end": 8704,
                                                          "loc": {
                                                            "start": {
                                                              "line": 213,
                                                              "column": 32
                                                            },
                                                            "end": {
                                                              "line": 213,
                                                              "column": 90
                                                            }
                                                          },
                                                          "expression": {
                                                            "type": "CallExpression",
                                                            "start": 8646,
                                                            "end": 8703,
                                                            "loc": {
                                                              "start": {
                                                                "line": 213,
                                                                "column": 32
                                                              },
                                                              "end": {
                                                                "line": 213,
                                                                "column": 89
                                                              }
                                                            },
                                                            "callee": {
                                                              "type": "MemberExpression",
                                                              "start": 8646,
                                                              "end": 8655,
                                                              "loc": {
                                                                "start": {
                                                                  "line": 213,
                                                                  "column": 32
                                                                },
                                                                "end": {
                                                                  "line": 213,
                                                                  "column": 41
                                                                }
                                                              },
                                                              "object": {
                                                                "type": "Identifier",
                                                                "start": 8646,
                                                                "end": 8651,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 32
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 37
                                                                  }
                                                                },
                                                                "name": "adder"
                                                              },
                                                              "property": {
                                                                "type": "Identifier",
                                                                "start": 8652,
                                                                "end": 8655,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 38
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 41
                                                                  }
                                                                },
                                                                "name": "add"
                                                              },
                                                              "computed": false
                                                            },
                                                            "arguments": [
                                                              {
                                                                "type": "Identifier",
                                                                "start": 8656,
                                                                "end": 8660,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 42
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 46
                                                                  }
                                                                },
                                                                "name": "type"
                                                              },
                                                              {
                                                                "type": "ArrayExpression",
                                                                "start": 8662,
                                                                "end": 8681,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 48
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 67
                                                                  }
                                                                },
                                                                "elements": [
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8663,
                                                                    "end": 8670,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 213,
                                                                        "column": 49
                                                                      },
                                                                      "end": {
                                                                        "line": 213,
                                                                        "column": 56
                                                                      }
                                                                    },
                                                                    "name": "basePar"
                                                                  },
                                                                  {
                                                                    "type": "Identifier",
                                                                    "start": 8672,
                                                                    "end": 8680,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 213,
                                                                        "column": 58
                                                                      },
                                                                      "end": {
                                                                        "line": 213,
                                                                        "column": 66
                                                                      }
                                                                    },
                                                                    "name": "otherPar"
                                                                  }
                                                                ]
                                                              },
                                                              {
                                                                "type": "ObjectExpression",
                                                                "start": 8683,
                                                                "end": 8702,
                                                                "loc": {
                                                                  "start": {
                                                                    "line": 213,
                                                                    "column": 69
                                                                  },
                                                                  "end": {
                                                                    "line": 213,
                                                                    "column": 88
                                                                  }
                                                                },
                                                                "properties": [
                                                                  {
                                                                    "type": "Property",
                                                                    "start": 8684,
                                                                    "end": 8701,
                                                                    "loc": {
                                                                      "start": {
                                                                        "line": 213,
                                                                        "column": 70
                                                                      },
                                                                      "end": {
                                                                        "line": 213,
                                                                        "column": 87
                                                                      }
                                                                    },
                                                                    "method": false,
                                                                    "shorthand": false,
                                                                    "computed": false,
                                                                    "key": {
                                                                      "type": "Identifier",
                                                                      "start": 8684,
                                                                      "end": 8695,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 213,
                                                                          "column": 70
                                                                        },
                                                                        "end": {
                                                                          "line": 213,
                                                                          "column": 81
                                                                        }
                                                                      },
                                                                      "name": "noVisualize"
                                                                    },
                                                                    "value": {
                                                                      "type": "Literal",
                                                                      "start": 8697,
                                                                      "end": 8701,
                                                                      "loc": {
                                                                        "start": {
                                                                          "line": 213,
                                                                          "column": 83
                                                                        },
                                                                        "end": {
                                                                          "line": 213,
                                                                          "column": 87
                                                                        }
                                                                      },
                                                                      "value": true,
                                                                      "rawValue": true,
                                                                      "raw": "true"
                                                                    },
                                                                    "kind": "init"
                                                                  }
                                                                ]
                                                              }
                                                            ]
                                                          }
                                                        }
                                                      ]
                                                    },
                                                    "alternate": null
                                                  }
                                                ]
                                              },
                                              "alternate": null
                                            }
                                          ]
                                        },
                                        "alternate": null
                                      }
                                    ]
                                  },
                                  "alternate": null
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 8834,
                      "end": 8856,
                      "loc": {
                        "start": {
                          "line": 221,
                          "column": 8
                        },
                        "end": {
                          "line": 221,
                          "column": 30
                        }
                      },
                      "argument": {
                        "type": "CallExpression",
                        "start": 8841,
                        "end": 8855,
                        "loc": {
                          "start": {
                            "line": 221,
                            "column": 15
                          },
                          "end": {
                            "line": 221,
                            "column": 29
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 8841,
                          "end": 8853,
                          "loc": {
                            "start": {
                              "line": 221,
                              "column": 15
                            },
                            "end": {
                              "line": 221,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 8841,
                            "end": 8846,
                            "loc": {
                              "start": {
                                "line": 221,
                                "column": 15
                              },
                              "end": {
                                "line": 221,
                                "column": 20
                              }
                            },
                            "name": "adder"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 8847,
                            "end": 8853,
                            "loc": {
                              "start": {
                                "line": 221,
                                "column": 21
                              },
                              "end": {
                                "line": 221,
                                "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": 6078,
                  "end": 6186,
                  "loc": {
                    "start": {
                      "line": 173,
                      "column": 4
                    },
                    "end": {
                      "line": 173,
                      "column": 112
                    }
                  },
                  "range": [
                    6078,
                    6186
                  ]
                }
              ]
            }
          ]
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": "====================== Implied constraints generator ========================",
            "start": 5459,
            "end": 5538,
            "loc": {
              "start": {
                "line": 151,
                "column": 0
              },
              "end": {
                "line": 151,
                "column": 79
              }
            },
            "range": [
              5459,
              5538
            ]
          },
          {
            "type": "Block",
            "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
            "start": 5539,
            "end": 5631,
            "loc": {
              "start": {
                "line": 152,
                "column": 0
              },
              "end": {
                "line": 154,
                "column": 3
              }
            },
            "range": [
              5539,
              5631
            ]
          }
        ],
        "trailingComments": []
      },
      "specifiers": [],
      "source": null,
      "leadingComments": [
        {
          "type": "CommentLine",
          "value": "====================== Implied constraints generator ========================",
          "start": 5459,
          "end": 5538,
          "loc": {
            "start": {
              "line": 151,
              "column": 0
            },
            "end": {
              "line": 151,
              "column": 79
            }
          },
          "range": [
            5459,
            5538
          ]
        },
        {
          "type": "Block",
          "value": "\n * ConstraintGenerator - an object that generates implied constraints for some sketch\n ",
          "start": 5539,
          "end": 5631,
          "loc": {
            "start": {
              "line": 152,
              "column": 0
            },
            "end": {
              "line": 154,
              "column": 3
            }
          },
          "range": [
            5539,
            5631
          ]
        }
      ]
    }
  ]
}