{
  "type": "File",
  "start": 0,
  "end": 1376,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 45,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 1376,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 45,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 0,
        "end": 33,
        "loc": {
          "start": {
            "line": 1,
            "column": 0
          },
          "end": {
            "line": 1,
            "column": 33
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 7,
            "end": 18,
            "loc": {
              "start": {
                "line": 1,
                "column": 7
              },
              "end": {
                "line": 1,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 7,
              "end": 18,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 7
                },
                "end": {
                  "line": 1,
                  "column": 18
                },
                "identifierName": "DragHandler"
              },
              "name": "DragHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 24,
          "end": 32,
          "loc": {
            "start": {
              "line": 1,
              "column": 24
            },
            "end": {
              "line": 1,
              "column": 32
            }
          },
          "extra": {
            "rawValue": "./drag",
            "raw": "'./drag'"
          },
          "value": "./drag"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 34,
        "end": 67,
        "loc": {
          "start": {
            "line": 2,
            "column": 0
          },
          "end": {
            "line": 2,
            "column": 33
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 41,
            "end": 52,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 41,
              "end": 52,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 7
                },
                "end": {
                  "line": 2,
                  "column": 18
                },
                "identifierName": "DrawHandler"
              },
              "name": "DrawHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 58,
          "end": 66,
          "loc": {
            "start": {
              "line": 2,
              "column": 24
            },
            "end": {
              "line": 2,
              "column": 32
            }
          },
          "extra": {
            "rawValue": "./draw",
            "raw": "'./draw'"
          },
          "value": "./draw"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 68,
        "end": 103,
        "loc": {
          "start": {
            "line": 3,
            "column": 0
          },
          "end": {
            "line": 3,
            "column": 35
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 75,
            "end": 87,
            "loc": {
              "start": {
                "line": 3,
                "column": 7
              },
              "end": {
                "line": 3,
                "column": 19
              }
            },
            "local": {
              "type": "Identifier",
              "start": 75,
              "end": 87,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 7
                },
                "end": {
                  "line": 3,
                  "column": 19
                },
                "identifierName": "AngleHandler"
              },
              "name": "AngleHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 93,
          "end": 102,
          "loc": {
            "start": {
              "line": 3,
              "column": 25
            },
            "end": {
              "line": 3,
              "column": 34
            }
          },
          "extra": {
            "rawValue": "./angle",
            "raw": "'./angle'"
          },
          "value": "./angle"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 104,
        "end": 141,
        "loc": {
          "start": {
            "line": 4,
            "column": 0
          },
          "end": {
            "line": 4,
            "column": 37
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 111,
            "end": 124,
            "loc": {
              "start": {
                "line": 4,
                "column": 7
              },
              "end": {
                "line": 4,
                "column": 20
              }
            },
            "local": {
              "type": "Identifier",
              "start": 111,
              "end": 124,
              "loc": {
                "start": {
                  "line": 4,
                  "column": 7
                },
                "end": {
                  "line": 4,
                  "column": 20
                },
                "identifierName": "FilletHandler"
              },
              "name": "FilletHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 130,
          "end": 140,
          "loc": {
            "start": {
              "line": 4,
              "column": 26
            },
            "end": {
              "line": 4,
              "column": 36
            }
          },
          "extra": {
            "rawValue": "./fillet",
            "raw": "'./fillet'"
          },
          "value": "./fillet"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 142,
        "end": 185,
        "loc": {
          "start": {
            "line": 5,
            "column": 0
          },
          "end": {
            "line": 5,
            "column": 43
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 149,
            "end": 165,
            "loc": {
              "start": {
                "line": 5,
                "column": 7
              },
              "end": {
                "line": 5,
                "column": 23
              }
            },
            "local": {
              "type": "Identifier",
              "start": 149,
              "end": 165,
              "loc": {
                "start": {
                  "line": 5,
                  "column": 7
                },
                "end": {
                  "line": 5,
                  "column": 23
                },
                "identifierName": "DuplicateHandler"
              },
              "name": "DuplicateHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 171,
          "end": 184,
          "loc": {
            "start": {
              "line": 5,
              "column": 29
            },
            "end": {
              "line": 5,
              "column": 42
            }
          },
          "extra": {
            "rawValue": "./duplicate",
            "raw": "'./duplicate'"
          },
          "value": "./duplicate"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 186,
        "end": 219,
        "loc": {
          "start": {
            "line": 6,
            "column": 0
          },
          "end": {
            "line": 6,
            "column": 33
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 193,
            "end": 204,
            "loc": {
              "start": {
                "line": 6,
                "column": 7
              },
              "end": {
                "line": 6,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 193,
              "end": 204,
              "loc": {
                "start": {
                  "line": 6,
                  "column": 7
                },
                "end": {
                  "line": 6,
                  "column": 18
                },
                "identifierName": "TrimHandler"
              },
              "name": "TrimHandler"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 210,
          "end": 218,
          "loc": {
            "start": {
              "line": 6,
              "column": 24
            },
            "end": {
              "line": 6,
              "column": 32
            }
          },
          "extra": {
            "rawValue": "./trim",
            "raw": "'./trim'"
          },
          "value": "./trim"
        }
      },
      {
        "type": "FunctionDeclaration",
        "start": 221,
        "end": 739,
        "loc": {
          "start": {
            "line": 8,
            "column": 0
          },
          "end": {
            "line": 28,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 230,
          "end": 245,
          "loc": {
            "start": {
              "line": 8,
              "column": 9
            },
            "end": {
              "line": 8,
              "column": 24
            },
            "identifierName": "getHandlerClass"
          },
          "name": "getHandlerClass"
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 246,
            "end": 250,
            "loc": {
              "start": {
                "line": 8,
                "column": 25
              },
              "end": {
                "line": 8,
                "column": 29
              },
              "identifierName": "name"
            },
            "name": "name"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 252,
          "end": 739,
          "loc": {
            "start": {
              "line": 8,
              "column": 31
            },
            "end": {
              "line": 28,
              "column": 1
            }
          },
          "body": [
            {
              "type": "SwitchStatement",
              "start": 258,
              "end": 737,
              "loc": {
                "start": {
                  "line": 9,
                  "column": 4
                },
                "end": {
                  "line": 27,
                  "column": 5
                }
              },
              "discriminant": {
                "type": "Identifier",
                "start": 266,
                "end": 270,
                "loc": {
                  "start": {
                    "line": 9,
                    "column": 12
                  },
                  "end": {
                    "line": 9,
                    "column": 16
                  },
                  "identifierName": "name"
                },
                "name": "name"
              },
              "cases": [
                {
                  "type": "SwitchCase",
                  "start": 282,
                  "end": 326,
                  "loc": {
                    "start": {
                      "line": 10,
                      "column": 8
                    },
                    "end": {
                      "line": 11,
                      "column": 31
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 307,
                      "end": 326,
                      "loc": {
                        "start": {
                          "line": 11,
                          "column": 12
                        },
                        "end": {
                          "line": 11,
                          "column": 31
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 314,
                        "end": 325,
                        "loc": {
                          "start": {
                            "line": 11,
                            "column": 19
                          },
                          "end": {
                            "line": 11,
                            "column": 30
                          },
                          "identifierName": "DragHandler"
                        },
                        "name": "DragHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 287,
                    "end": 293,
                    "loc": {
                      "start": {
                        "line": 10,
                        "column": 13
                      },
                      "end": {
                        "line": 10,
                        "column": 19
                      }
                    },
                    "extra": {
                      "rawValue": "drag",
                      "raw": "'drag'"
                    },
                    "value": "drag"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 335,
                  "end": 348,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 8
                    },
                    "end": {
                      "line": 12,
                      "column": 21
                    }
                  },
                  "consequent": [],
                  "test": {
                    "type": "StringLiteral",
                    "start": 340,
                    "end": 347,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 13
                      },
                      "end": {
                        "line": 12,
                        "column": 20
                      }
                    },
                    "extra": {
                      "rawValue": "point",
                      "raw": "'point'"
                    },
                    "value": "point"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 357,
                  "end": 369,
                  "loc": {
                    "start": {
                      "line": 13,
                      "column": 8
                    },
                    "end": {
                      "line": 13,
                      "column": 20
                    }
                  },
                  "consequent": [],
                  "test": {
                    "type": "StringLiteral",
                    "start": 362,
                    "end": 368,
                    "loc": {
                      "start": {
                        "line": 13,
                        "column": 13
                      },
                      "end": {
                        "line": 13,
                        "column": 19
                      }
                    },
                    "extra": {
                      "rawValue": "line",
                      "raw": "'line'"
                    },
                    "value": "line"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 378,
                  "end": 395,
                  "loc": {
                    "start": {
                      "line": 14,
                      "column": 8
                    },
                    "end": {
                      "line": 14,
                      "column": 25
                    }
                  },
                  "consequent": [],
                  "test": {
                    "type": "StringLiteral",
                    "start": 383,
                    "end": 394,
                    "loc": {
                      "start": {
                        "line": 14,
                        "column": 13
                      },
                      "end": {
                        "line": 14,
                        "column": 24
                      }
                    },
                    "extra": {
                      "rawValue": "arccenter",
                      "raw": "'arccenter'"
                    },
                    "value": "arccenter"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 404,
                  "end": 421,
                  "loc": {
                    "start": {
                      "line": 15,
                      "column": 8
                    },
                    "end": {
                      "line": 15,
                      "column": 25
                    }
                  },
                  "consequent": [],
                  "test": {
                    "type": "StringLiteral",
                    "start": 409,
                    "end": 420,
                    "loc": {
                      "start": {
                        "line": 15,
                        "column": 13
                      },
                      "end": {
                        "line": 15,
                        "column": 24
                      }
                    },
                    "extra": {
                      "rawValue": "arcmiddle",
                      "raw": "'arcmiddle'"
                    },
                    "value": "arcmiddle"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 430,
                  "end": 448,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 8
                    },
                    "end": {
                      "line": 16,
                      "column": 26
                    }
                  },
                  "consequent": [],
                  "test": {
                    "type": "StringLiteral",
                    "start": 435,
                    "end": 447,
                    "loc": {
                      "start": {
                        "line": 16,
                        "column": 13
                      },
                      "end": {
                        "line": 16,
                        "column": 25
                      }
                    },
                    "extra": {
                      "rawValue": "arctangent",
                      "raw": "'arctangent'"
                    },
                    "value": "arctangent"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 457,
                  "end": 503,
                  "loc": {
                    "start": {
                      "line": 17,
                      "column": 8
                    },
                    "end": {
                      "line": 18,
                      "column": 31
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 484,
                      "end": 503,
                      "loc": {
                        "start": {
                          "line": 18,
                          "column": 12
                        },
                        "end": {
                          "line": 18,
                          "column": 31
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 491,
                        "end": 502,
                        "loc": {
                          "start": {
                            "line": 18,
                            "column": 19
                          },
                          "end": {
                            "line": 18,
                            "column": 30
                          },
                          "identifierName": "DrawHandler"
                        },
                        "name": "DrawHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 462,
                    "end": 470,
                    "loc": {
                      "start": {
                        "line": 17,
                        "column": 13
                      },
                      "end": {
                        "line": 17,
                        "column": 21
                      }
                    },
                    "extra": {
                      "rawValue": "circle",
                      "raw": "'circle'"
                    },
                    "value": "circle"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 512,
                  "end": 558,
                  "loc": {
                    "start": {
                      "line": 19,
                      "column": 8
                    },
                    "end": {
                      "line": 20,
                      "column": 32
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 538,
                      "end": 558,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 12
                        },
                        "end": {
                          "line": 20,
                          "column": 32
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 545,
                        "end": 557,
                        "loc": {
                          "start": {
                            "line": 20,
                            "column": 19
                          },
                          "end": {
                            "line": 20,
                            "column": 31
                          },
                          "identifierName": "AngleHandler"
                        },
                        "name": "AngleHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 517,
                    "end": 524,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 13
                      },
                      "end": {
                        "line": 19,
                        "column": 20
                      }
                    },
                    "extra": {
                      "rawValue": "angle",
                      "raw": "'angle'"
                    },
                    "value": "angle"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 567,
                  "end": 615,
                  "loc": {
                    "start": {
                      "line": 21,
                      "column": 8
                    },
                    "end": {
                      "line": 22,
                      "column": 33
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 594,
                      "end": 615,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 12
                        },
                        "end": {
                          "line": 22,
                          "column": 33
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 601,
                        "end": 614,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 19
                          },
                          "end": {
                            "line": 22,
                            "column": 32
                          },
                          "identifierName": "FilletHandler"
                        },
                        "name": "FilletHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 572,
                    "end": 580,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 13
                      },
                      "end": {
                        "line": 21,
                        "column": 21
                      }
                    },
                    "extra": {
                      "rawValue": "fillet",
                      "raw": "'fillet'"
                    },
                    "value": "fillet"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 624,
                  "end": 678,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 8
                    },
                    "end": {
                      "line": 24,
                      "column": 36
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 654,
                      "end": 678,
                      "loc": {
                        "start": {
                          "line": 24,
                          "column": 12
                        },
                        "end": {
                          "line": 24,
                          "column": 36
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 661,
                        "end": 677,
                        "loc": {
                          "start": {
                            "line": 24,
                            "column": 19
                          },
                          "end": {
                            "line": 24,
                            "column": 35
                          },
                          "identifierName": "DuplicateHandler"
                        },
                        "name": "DuplicateHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 629,
                    "end": 640,
                    "loc": {
                      "start": {
                        "line": 23,
                        "column": 13
                      },
                      "end": {
                        "line": 23,
                        "column": 24
                      }
                    },
                    "extra": {
                      "rawValue": "duplicate",
                      "raw": "'duplicate'"
                    },
                    "value": "duplicate"
                  }
                },
                {
                  "type": "SwitchCase",
                  "start": 687,
                  "end": 731,
                  "loc": {
                    "start": {
                      "line": 25,
                      "column": 8
                    },
                    "end": {
                      "line": 26,
                      "column": 31
                    }
                  },
                  "consequent": [
                    {
                      "type": "ReturnStatement",
                      "start": 712,
                      "end": 731,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 12
                        },
                        "end": {
                          "line": 26,
                          "column": 31
                        }
                      },
                      "argument": {
                        "type": "Identifier",
                        "start": 719,
                        "end": 730,
                        "loc": {
                          "start": {
                            "line": 26,
                            "column": 19
                          },
                          "end": {
                            "line": 26,
                            "column": 30
                          },
                          "identifierName": "TrimHandler"
                        },
                        "name": "TrimHandler"
                      }
                    }
                  ],
                  "test": {
                    "type": "StringLiteral",
                    "start": 692,
                    "end": 698,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 13
                      },
                      "end": {
                        "line": 25,
                        "column": 19
                      }
                    },
                    "extra": {
                      "rawValue": "trim",
                      "raw": "'trim'"
                    },
                    "value": "trim"
                  }
                }
              ]
            }
          ],
          "directives": [],
          "trailingComments": null
        },
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " destroy oldHandler (if needed) and return the new handler",
            "start": 741,
            "end": 801,
            "loc": {
              "start": {
                "line": 30,
                "column": 0
              },
              "end": {
                "line": 30,
                "column": 60
              }
            }
          }
        ]
      },
      {
        "type": "ExportDefaultDeclaration",
        "start": 802,
        "end": 1244,
        "loc": {
          "start": {
            "line": 31,
            "column": 0
          },
          "end": {
            "line": 41,
            "column": 1
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 817,
          "end": 1244,
          "loc": {
            "start": {
              "line": 31,
              "column": 15
            },
            "end": {
              "line": 41,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 826,
            "end": 833,
            "loc": {
              "start": {
                "line": 31,
                "column": 24
              },
              "end": {
                "line": 31,
                "column": 31
              },
              "identifierName": "Handler"
            },
            "name": "Handler",
            "leadingComments": null
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 834,
              "end": 842,
              "loc": {
                "start": {
                  "line": 31,
                  "column": 32
                },
                "end": {
                  "line": 31,
                  "column": 40
                },
                "identifierName": "sketcher"
              },
              "name": "sketcher"
            },
            {
              "type": "Identifier",
              "start": 844,
              "end": 848,
              "loc": {
                "start": {
                  "line": 31,
                  "column": 42
                },
                "end": {
                  "line": 31,
                  "column": 46
                },
                "identifierName": "name"
              },
              "name": "name"
            },
            {
              "type": "Identifier",
              "start": 850,
              "end": 860,
              "loc": {
                "start": {
                  "line": 31,
                  "column": 48
                },
                "end": {
                  "line": 31,
                  "column": 58
                },
                "identifierName": "oldHandler"
              },
              "name": "oldHandler"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 862,
            "end": 1244,
            "loc": {
              "start": {
                "line": 31,
                "column": 60
              },
              "end": {
                "line": 41,
                "column": 1
              }
            },
            "body": [
              {
                "type": "VariableDeclaration",
                "start": 868,
                "end": 966,
                "loc": {
                  "start": {
                    "line": 32,
                    "column": 4
                  },
                  "end": {
                    "line": 32,
                    "column": 102
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 874,
                    "end": 931,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 10
                      },
                      "end": {
                        "line": 32,
                        "column": 67
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 874,
                      "end": 882,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 10
                        },
                        "end": {
                          "line": 32,
                          "column": 18
                        },
                        "identifierName": "oldClass"
                      },
                      "name": "oldClass"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 885,
                      "end": 931,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 21
                        },
                        "end": {
                          "line": 32,
                          "column": 67
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 885,
                        "end": 900,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 21
                          },
                          "end": {
                            "line": 32,
                            "column": 36
                          },
                          "identifierName": "getHandlerClass"
                        },
                        "name": "getHandlerClass"
                      },
                      "arguments": [
                        {
                          "type": "LogicalExpression",
                          "start": 901,
                          "end": 930,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 37
                            },
                            "end": {
                              "line": 32,
                              "column": 66
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 901,
                            "end": 911,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 37
                              },
                              "end": {
                                "line": 32,
                                "column": 47
                              },
                              "identifierName": "oldHandler"
                            },
                            "name": "oldHandler"
                          },
                          "operator": "&&",
                          "right": {
                            "type": "MemberExpression",
                            "start": 915,
                            "end": 930,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 51
                              },
                              "end": {
                                "line": 32,
                                "column": 66
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 915,
                              "end": 925,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 51
                                },
                                "end": {
                                  "line": 32,
                                  "column": 61
                                },
                                "identifierName": "oldHandler"
                              },
                              "name": "oldHandler"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 926,
                              "end": 930,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 62
                                },
                                "end": {
                                  "line": 32,
                                  "column": 66
                                },
                                "identifierName": "name"
                              },
                              "name": "name"
                            },
                            "computed": false
                          }
                        }
                      ]
                    }
                  },
                  {
                    "type": "VariableDeclarator",
                    "start": 933,
                    "end": 965,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 69
                      },
                      "end": {
                        "line": 32,
                        "column": 101
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 933,
                      "end": 941,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 69
                        },
                        "end": {
                          "line": 32,
                          "column": 77
                        },
                        "identifierName": "newClass"
                      },
                      "name": "newClass"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 944,
                      "end": 965,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 80
                        },
                        "end": {
                          "line": 32,
                          "column": 101
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 944,
                        "end": 959,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 80
                          },
                          "end": {
                            "line": 32,
                            "column": 95
                          },
                          "identifierName": "getHandlerClass"
                        },
                        "name": "getHandlerClass"
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 960,
                          "end": 964,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 96
                            },
                            "end": {
                              "line": 32,
                              "column": 100
                            },
                            "identifierName": "name"
                          },
                          "name": "name"
                        }
                      ]
                    }
                  }
                ],
                "kind": "const"
              },
              {
                "type": "VariableDeclaration",
                "start": 971,
                "end": 996,
                "loc": {
                  "start": {
                    "line": 33,
                    "column": 4
                  },
                  "end": {
                    "line": 33,
                    "column": 29
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 975,
                    "end": 995,
                    "loc": {
                      "start": {
                        "line": 33,
                        "column": 8
                      },
                      "end": {
                        "line": 33,
                        "column": 28
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 975,
                      "end": 982,
                      "loc": {
                        "start": {
                          "line": 33,
                          "column": 8
                        },
                        "end": {
                          "line": 33,
                          "column": 15
                        },
                        "identifierName": "handler"
                      },
                      "name": "handler"
                    },
                    "init": {
                      "type": "Identifier",
                      "start": 985,
                      "end": 995,
                      "loc": {
                        "start": {
                          "line": 33,
                          "column": 18
                        },
                        "end": {
                          "line": 33,
                          "column": 28
                        },
                        "identifierName": "oldHandler"
                      },
                      "name": "oldHandler"
                    }
                  }
                ],
                "kind": "let"
              },
              {
                "type": "IfStatement",
                "start": 1001,
                "end": 1162,
                "loc": {
                  "start": {
                    "line": 34,
                    "column": 4
                  },
                  "end": {
                    "line": 38,
                    "column": 5
                  }
                },
                "test": {
                  "type": "BinaryExpression",
                  "start": 1005,
                  "end": 1026,
                  "loc": {
                    "start": {
                      "line": 34,
                      "column": 8
                    },
                    "end": {
                      "line": 34,
                      "column": 29
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 1005,
                    "end": 1013,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 8
                      },
                      "end": {
                        "line": 34,
                        "column": 16
                      },
                      "identifierName": "oldClass"
                    },
                    "name": "oldClass"
                  },
                  "operator": "!==",
                  "right": {
                    "type": "Identifier",
                    "start": 1018,
                    "end": 1026,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 21
                      },
                      "end": {
                        "line": 34,
                        "column": 29
                      },
                      "identifierName": "newClass"
                    },
                    "name": "newClass"
                  }
                },
                "consequent": {
                  "type": "BlockStatement",
                  "start": 1028,
                  "end": 1162,
                  "loc": {
                    "start": {
                      "line": 34,
                      "column": 31
                    },
                    "end": {
                      "line": 38,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1038,
                      "end": 1073,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 8
                        },
                        "end": {
                          "line": 35,
                          "column": 43
                        }
                      },
                      "expression": {
                        "type": "LogicalExpression",
                        "start": 1038,
                        "end": 1072,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 8
                          },
                          "end": {
                            "line": 35,
                            "column": 42
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 1038,
                          "end": 1048,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 8
                            },
                            "end": {
                              "line": 35,
                              "column": 18
                            },
                            "identifierName": "oldHandler"
                          },
                          "name": "oldHandler"
                        },
                        "operator": "&&",
                        "right": {
                          "type": "CallExpression",
                          "start": 1052,
                          "end": 1072,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 22
                            },
                            "end": {
                              "line": 35,
                              "column": 42
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1052,
                            "end": 1070,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 22
                              },
                              "end": {
                                "line": 35,
                                "column": 40
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1052,
                              "end": 1062,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 22
                                },
                                "end": {
                                  "line": 35,
                                  "column": 32
                                },
                                "identifierName": "oldHandler"
                              },
                              "name": "oldHandler"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1063,
                              "end": 1070,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 33
                                },
                                "end": {
                                  "line": 35,
                                  "column": 40
                                },
                                "identifierName": "destroy"
                              },
                              "name": "destroy"
                            },
                            "computed": false
                          },
                          "arguments": []
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1082,
                      "end": 1121,
                      "loc": {
                        "start": {
                          "line": 36,
                          "column": 8
                        },
                        "end": {
                          "line": 36,
                          "column": 47
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1082,
                        "end": 1120,
                        "loc": {
                          "start": {
                            "line": 36,
                            "column": 8
                          },
                          "end": {
                            "line": 36,
                            "column": 46
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 1082,
                          "end": 1089,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 8
                            },
                            "end": {
                              "line": 36,
                              "column": 15
                            },
                            "identifierName": "handler"
                          },
                          "name": "handler"
                        },
                        "right": {
                          "type": "NewExpression",
                          "start": 1092,
                          "end": 1120,
                          "loc": {
                            "start": {
                              "line": 36,
                              "column": 18
                            },
                            "end": {
                              "line": 36,
                              "column": 46
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1096,
                            "end": 1104,
                            "loc": {
                              "start": {
                                "line": 36,
                                "column": 22
                              },
                              "end": {
                                "line": 36,
                                "column": 30
                              },
                              "identifierName": "newClass"
                            },
                            "name": "newClass"
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1105,
                              "end": 1113,
                              "loc": {
                                "start": {
                                  "line": 36,
                                  "column": 31
                                },
                                "end": {
                                  "line": 36,
                                  "column": 39
                                },
                                "identifierName": "sketcher"
                              },
                              "name": "sketcher"
                            },
                            {
                              "type": "Identifier",
                              "start": 1115,
                              "end": 1119,
                              "loc": {
                                "start": {
                                  "line": 36,
                                  "column": 41
                                },
                                "end": {
                                  "line": 36,
                                  "column": 45
                                },
                                "identifierName": "name"
                              },
                              "name": "name"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1130,
                      "end": 1156,
                      "loc": {
                        "start": {
                          "line": 37,
                          "column": 8
                        },
                        "end": {
                          "line": 37,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1130,
                        "end": 1155,
                        "loc": {
                          "start": {
                            "line": 37,
                            "column": 8
                          },
                          "end": {
                            "line": 37,
                            "column": 33
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1130,
                          "end": 1153,
                          "loc": {
                            "start": {
                              "line": 37,
                              "column": 8
                            },
                            "end": {
                              "line": 37,
                              "column": 31
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1130,
                            "end": 1137,
                            "loc": {
                              "start": {
                                "line": 37,
                                "column": 8
                              },
                              "end": {
                                "line": 37,
                                "column": 15
                              },
                              "identifierName": "handler"
                            },
                            "name": "handler"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1138,
                            "end": 1153,
                            "loc": {
                              "start": {
                                "line": 37,
                                "column": 16
                              },
                              "end": {
                                "line": 37,
                                "column": 31
                              },
                              "identifierName": "addInteractions"
                            },
                            "name": "addInteractions"
                          },
                          "computed": false
                        },
                        "arguments": []
                      }
                    }
                  ],
                  "directives": []
                },
                "alternate": null
              },
              {
                "type": "IfStatement",
                "start": 1167,
                "end": 1222,
                "loc": {
                  "start": {
                    "line": 39,
                    "column": 4
                  },
                  "end": {
                    "line": 39,
                    "column": 59
                  }
                },
                "test": {
                  "type": "BinaryExpression",
                  "start": 1171,
                  "end": 1195,
                  "loc": {
                    "start": {
                      "line": 39,
                      "column": 8
                    },
                    "end": {
                      "line": 39,
                      "column": 32
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 1171,
                    "end": 1179,
                    "loc": {
                      "start": {
                        "line": 39,
                        "column": 8
                      },
                      "end": {
                        "line": 39,
                        "column": 16
                      },
                      "identifierName": "newClass"
                    },
                    "name": "newClass"
                  },
                  "operator": "===",
                  "right": {
                    "type": "Identifier",
                    "start": 1184,
                    "end": 1195,
                    "loc": {
                      "start": {
                        "line": 39,
                        "column": 21
                      },
                      "end": {
                        "line": 39,
                        "column": 32
                      },
                      "identifierName": "DrawHandler"
                    },
                    "name": "DrawHandler"
                  }
                },
                "consequent": {
                  "type": "ExpressionStatement",
                  "start": 1197,
                  "end": 1222,
                  "loc": {
                    "start": {
                      "line": 39,
                      "column": 34
                    },
                    "end": {
                      "line": 39,
                      "column": 59
                    }
                  },
                  "expression": {
                    "type": "CallExpression",
                    "start": 1197,
                    "end": 1221,
                    "loc": {
                      "start": {
                        "line": 39,
                        "column": 34
                      },
                      "end": {
                        "line": 39,
                        "column": 58
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 1197,
                      "end": 1215,
                      "loc": {
                        "start": {
                          "line": 39,
                          "column": 34
                        },
                        "end": {
                          "line": 39,
                          "column": 52
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 1197,
                        "end": 1204,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 34
                          },
                          "end": {
                            "line": 39,
                            "column": 41
                          },
                          "identifierName": "handler"
                        },
                        "name": "handler"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 1205,
                        "end": 1215,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 42
                          },
                          "end": {
                            "line": 39,
                            "column": 52
                          },
                          "identifierName": "switchMode"
                        },
                        "name": "switchMode"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1216,
                        "end": 1220,
                        "loc": {
                          "start": {
                            "line": 39,
                            "column": 53
                          },
                          "end": {
                            "line": 39,
                            "column": 57
                          },
                          "identifierName": "name"
                        },
                        "name": "name"
                      }
                    ]
                  }
                },
                "alternate": null
              },
              {
                "type": "ReturnStatement",
                "start": 1227,
                "end": 1242,
                "loc": {
                  "start": {
                    "line": 40,
                    "column": 4
                  },
                  "end": {
                    "line": 40,
                    "column": 19
                  }
                },
                "argument": {
                  "type": "Identifier",
                  "start": 1234,
                  "end": 1241,
                  "loc": {
                    "start": {
                      "line": 40,
                      "column": 11
                    },
                    "end": {
                      "line": 40,
                      "column": 18
                    },
                    "identifierName": "handler"
                  },
                  "name": "handler"
                }
              }
            ],
            "directives": [],
            "trailingComments": null
          },
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " destroy oldHandler (if needed) and return the new handler",
              "start": 741,
              "end": 801,
              "loc": {
                "start": {
                  "line": 30,
                  "column": 0
                },
                "end": {
                  "line": 30,
                  "column": 60
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentLine",
              "value": " Support hot reloading",
              "start": 1246,
              "end": 1270,
              "loc": {
                "start": {
                  "line": 43,
                  "column": 0
                },
                "end": {
                  "line": 43,
                  "column": 24
                }
              }
            }
          ]
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " destroy oldHandler (if needed) and return the new handler",
            "start": 741,
            "end": 801,
            "loc": {
              "start": {
                "line": 30,
                "column": 0
              },
              "end": {
                "line": 30,
                "column": 60
              }
            }
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " Support hot reloading",
            "start": 1246,
            "end": 1270,
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 43,
                "column": 24
              }
            }
          }
        ]
      },
      {
        "type": "IfStatement",
        "start": 1271,
        "end": 1375,
        "loc": {
          "start": {
            "line": 44,
            "column": 0
          },
          "end": {
            "line": 44,
            "column": 104
          }
        },
        "test": {
          "type": "MemberExpression",
          "start": 1275,
          "end": 1285,
          "loc": {
            "start": {
              "line": 44,
              "column": 4
            },
            "end": {
              "line": 44,
              "column": 14
            }
          },
          "object": {
            "type": "Identifier",
            "start": 1275,
            "end": 1281,
            "loc": {
              "start": {
                "line": 44,
                "column": 4
              },
              "end": {
                "line": 44,
                "column": 10
              },
              "identifierName": "module"
            },
            "name": "module",
            "leadingComments": null
          },
          "property": {
            "type": "Identifier",
            "start": 1282,
            "end": 1285,
            "loc": {
              "start": {
                "line": 44,
                "column": 11
              },
              "end": {
                "line": 44,
                "column": 14
              },
              "identifierName": "hot"
            },
            "name": "hot"
          },
          "computed": false,
          "leadingComments": null
        },
        "consequent": {
          "type": "ExpressionStatement",
          "start": 1287,
          "end": 1375,
          "loc": {
            "start": {
              "line": 44,
              "column": 16
            },
            "end": {
              "line": 44,
              "column": 104
            }
          },
          "expression": {
            "type": "CallExpression",
            "start": 1287,
            "end": 1374,
            "loc": {
              "start": {
                "line": 44,
                "column": 16
              },
              "end": {
                "line": 44,
                "column": 103
              }
            },
            "callee": {
              "type": "MemberExpression",
              "start": 1287,
              "end": 1304,
              "loc": {
                "start": {
                  "line": 44,
                  "column": 16
                },
                "end": {
                  "line": 44,
                  "column": 33
                }
              },
              "object": {
                "type": "MemberExpression",
                "start": 1287,
                "end": 1297,
                "loc": {
                  "start": {
                    "line": 44,
                    "column": 16
                  },
                  "end": {
                    "line": 44,
                    "column": 26
                  }
                },
                "object": {
                  "type": "Identifier",
                  "start": 1287,
                  "end": 1293,
                  "loc": {
                    "start": {
                      "line": 44,
                      "column": 16
                    },
                    "end": {
                      "line": 44,
                      "column": 22
                    },
                    "identifierName": "module"
                  },
                  "name": "module"
                },
                "property": {
                  "type": "Identifier",
                  "start": 1294,
                  "end": 1297,
                  "loc": {
                    "start": {
                      "line": 44,
                      "column": 23
                    },
                    "end": {
                      "line": 44,
                      "column": 26
                    },
                    "identifierName": "hot"
                  },
                  "name": "hot"
                },
                "computed": false
              },
              "property": {
                "type": "Identifier",
                "start": 1298,
                "end": 1304,
                "loc": {
                  "start": {
                    "line": 44,
                    "column": 27
                  },
                  "end": {
                    "line": 44,
                    "column": 33
                  },
                  "identifierName": "accept"
                },
                "name": "accept"
              },
              "computed": false
            },
            "arguments": [
              {
                "type": "ArrayExpression",
                "start": 1305,
                "end": 1373,
                "loc": {
                  "start": {
                    "line": 44,
                    "column": 34
                  },
                  "end": {
                    "line": 44,
                    "column": 102
                  }
                },
                "elements": [
                  {
                    "type": "StringLiteral",
                    "start": 1306,
                    "end": 1314,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 35
                      },
                      "end": {
                        "line": 44,
                        "column": 43
                      }
                    },
                    "extra": {
                      "rawValue": "./drag",
                      "raw": "'./drag'"
                    },
                    "value": "./drag"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 1316,
                    "end": 1324,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 45
                      },
                      "end": {
                        "line": 44,
                        "column": 53
                      }
                    },
                    "extra": {
                      "rawValue": "./draw",
                      "raw": "'./draw'"
                    },
                    "value": "./draw"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 1326,
                    "end": 1335,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 55
                      },
                      "end": {
                        "line": 44,
                        "column": 64
                      }
                    },
                    "extra": {
                      "rawValue": "./angle",
                      "raw": "'./angle'"
                    },
                    "value": "./angle"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 1337,
                    "end": 1347,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 66
                      },
                      "end": {
                        "line": 44,
                        "column": 76
                      }
                    },
                    "extra": {
                      "rawValue": "./fillet",
                      "raw": "'./fillet'"
                    },
                    "value": "./fillet"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 1349,
                    "end": 1362,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 78
                      },
                      "end": {
                        "line": 44,
                        "column": 91
                      }
                    },
                    "extra": {
                      "rawValue": "./duplicate",
                      "raw": "'./duplicate'"
                    },
                    "value": "./duplicate"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 1364,
                    "end": 1372,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 93
                      },
                      "end": {
                        "line": 44,
                        "column": 101
                      }
                    },
                    "extra": {
                      "rawValue": "./trim",
                      "raw": "'./trim'"
                    },
                    "value": "./trim"
                  }
                ]
              }
            ]
          }
        },
        "alternate": null,
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " Support hot reloading",
            "start": 1246,
            "end": 1270,
            "loc": {
              "start": {
                "line": 43,
                "column": 0
              },
              "end": {
                "line": 43,
                "column": 24
              }
            }
          }
        ]
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentLine",
      "value": " destroy oldHandler (if needed) and return the new handler",
      "start": 741,
      "end": 801,
      "loc": {
        "start": {
          "line": 30,
          "column": 0
        },
        "end": {
          "line": 30,
          "column": 60
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Support hot reloading",
      "start": 1246,
      "end": 1270,
      "loc": {
        "start": {
          "line": 43,
          "column": 0
        },
        "end": {
          "line": 43,
          "column": 24
        }
      }
    }
  ],
  "tokens": [
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 0,
      "end": 6,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DragHandler",
      "start": 7,
      "end": 18,
      "loc": {
        "start": {
          "line": 1,
          "column": 7
        },
        "end": {
          "line": 1,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 19,
      "end": 23,
      "loc": {
        "start": {
          "line": 1,
          "column": 19
        },
        "end": {
          "line": 1,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./drag",
      "start": 24,
      "end": 32,
      "loc": {
        "start": {
          "line": 1,
          "column": 24
        },
        "end": {
          "line": 1,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 32,
      "end": 33,
      "loc": {
        "start": {
          "line": 1,
          "column": 32
        },
        "end": {
          "line": 1,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 34,
      "end": 40,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DrawHandler",
      "start": 41,
      "end": 52,
      "loc": {
        "start": {
          "line": 2,
          "column": 7
        },
        "end": {
          "line": 2,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 53,
      "end": 57,
      "loc": {
        "start": {
          "line": 2,
          "column": 19
        },
        "end": {
          "line": 2,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./draw",
      "start": 58,
      "end": 66,
      "loc": {
        "start": {
          "line": 2,
          "column": 24
        },
        "end": {
          "line": 2,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 66,
      "end": 67,
      "loc": {
        "start": {
          "line": 2,
          "column": 32
        },
        "end": {
          "line": 2,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 68,
      "end": 74,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "AngleHandler",
      "start": 75,
      "end": 87,
      "loc": {
        "start": {
          "line": 3,
          "column": 7
        },
        "end": {
          "line": 3,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 88,
      "end": 92,
      "loc": {
        "start": {
          "line": 3,
          "column": 20
        },
        "end": {
          "line": 3,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./angle",
      "start": 93,
      "end": 102,
      "loc": {
        "start": {
          "line": 3,
          "column": 25
        },
        "end": {
          "line": 3,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 102,
      "end": 103,
      "loc": {
        "start": {
          "line": 3,
          "column": 34
        },
        "end": {
          "line": 3,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 104,
      "end": 110,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "FilletHandler",
      "start": 111,
      "end": 124,
      "loc": {
        "start": {
          "line": 4,
          "column": 7
        },
        "end": {
          "line": 4,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 125,
      "end": 129,
      "loc": {
        "start": {
          "line": 4,
          "column": 21
        },
        "end": {
          "line": 4,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./fillet",
      "start": 130,
      "end": 140,
      "loc": {
        "start": {
          "line": 4,
          "column": 26
        },
        "end": {
          "line": 4,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 140,
      "end": 141,
      "loc": {
        "start": {
          "line": 4,
          "column": 36
        },
        "end": {
          "line": 4,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 142,
      "end": 148,
      "loc": {
        "start": {
          "line": 5,
          "column": 0
        },
        "end": {
          "line": 5,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DuplicateHandler",
      "start": 149,
      "end": 165,
      "loc": {
        "start": {
          "line": 5,
          "column": 7
        },
        "end": {
          "line": 5,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 166,
      "end": 170,
      "loc": {
        "start": {
          "line": 5,
          "column": 24
        },
        "end": {
          "line": 5,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./duplicate",
      "start": 171,
      "end": 184,
      "loc": {
        "start": {
          "line": 5,
          "column": 29
        },
        "end": {
          "line": 5,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 184,
      "end": 185,
      "loc": {
        "start": {
          "line": 5,
          "column": 42
        },
        "end": {
          "line": 5,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 186,
      "end": 192,
      "loc": {
        "start": {
          "line": 6,
          "column": 0
        },
        "end": {
          "line": 6,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "TrimHandler",
      "start": 193,
      "end": 204,
      "loc": {
        "start": {
          "line": 6,
          "column": 7
        },
        "end": {
          "line": 6,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 205,
      "end": 209,
      "loc": {
        "start": {
          "line": 6,
          "column": 19
        },
        "end": {
          "line": 6,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./trim",
      "start": 210,
      "end": 218,
      "loc": {
        "start": {
          "line": 6,
          "column": 24
        },
        "end": {
          "line": 6,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 218,
      "end": 219,
      "loc": {
        "start": {
          "line": 6,
          "column": 32
        },
        "end": {
          "line": 6,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 221,
      "end": 229,
      "loc": {
        "start": {
          "line": 8,
          "column": 0
        },
        "end": {
          "line": 8,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHandlerClass",
      "start": 230,
      "end": 245,
      "loc": {
        "start": {
          "line": 8,
          "column": 9
        },
        "end": {
          "line": 8,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 245,
      "end": 246,
      "loc": {
        "start": {
          "line": 8,
          "column": 24
        },
        "end": {
          "line": 8,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 246,
      "end": 250,
      "loc": {
        "start": {
          "line": 8,
          "column": 25
        },
        "end": {
          "line": 8,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 250,
      "end": 251,
      "loc": {
        "start": {
          "line": 8,
          "column": 29
        },
        "end": {
          "line": 8,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 252,
      "end": 253,
      "loc": {
        "start": {
          "line": 8,
          "column": 31
        },
        "end": {
          "line": 8,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "switch",
        "keyword": "switch",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "switch",
      "start": 258,
      "end": 264,
      "loc": {
        "start": {
          "line": 9,
          "column": 4
        },
        "end": {
          "line": 9,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 265,
      "end": 266,
      "loc": {
        "start": {
          "line": 9,
          "column": 11
        },
        "end": {
          "line": 9,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 266,
      "end": 270,
      "loc": {
        "start": {
          "line": 9,
          "column": 12
        },
        "end": {
          "line": 9,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 270,
      "end": 271,
      "loc": {
        "start": {
          "line": 9,
          "column": 16
        },
        "end": {
          "line": 9,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 272,
      "end": 273,
      "loc": {
        "start": {
          "line": 9,
          "column": 18
        },
        "end": {
          "line": 9,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 282,
      "end": 286,
      "loc": {
        "start": {
          "line": 10,
          "column": 8
        },
        "end": {
          "line": 10,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "drag",
      "start": 287,
      "end": 293,
      "loc": {
        "start": {
          "line": 10,
          "column": 13
        },
        "end": {
          "line": 10,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 293,
      "end": 294,
      "loc": {
        "start": {
          "line": 10,
          "column": 19
        },
        "end": {
          "line": 10,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 307,
      "end": 313,
      "loc": {
        "start": {
          "line": 11,
          "column": 12
        },
        "end": {
          "line": 11,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DragHandler",
      "start": 314,
      "end": 325,
      "loc": {
        "start": {
          "line": 11,
          "column": 19
        },
        "end": {
          "line": 11,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 325,
      "end": 326,
      "loc": {
        "start": {
          "line": 11,
          "column": 30
        },
        "end": {
          "line": 11,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 335,
      "end": 339,
      "loc": {
        "start": {
          "line": 12,
          "column": 8
        },
        "end": {
          "line": 12,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "point",
      "start": 340,
      "end": 347,
      "loc": {
        "start": {
          "line": 12,
          "column": 13
        },
        "end": {
          "line": 12,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 347,
      "end": 348,
      "loc": {
        "start": {
          "line": 12,
          "column": 20
        },
        "end": {
          "line": 12,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 357,
      "end": 361,
      "loc": {
        "start": {
          "line": 13,
          "column": 8
        },
        "end": {
          "line": 13,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "line",
      "start": 362,
      "end": 368,
      "loc": {
        "start": {
          "line": 13,
          "column": 13
        },
        "end": {
          "line": 13,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 368,
      "end": 369,
      "loc": {
        "start": {
          "line": 13,
          "column": 19
        },
        "end": {
          "line": 13,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 378,
      "end": 382,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "arccenter",
      "start": 383,
      "end": 394,
      "loc": {
        "start": {
          "line": 14,
          "column": 13
        },
        "end": {
          "line": 14,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 394,
      "end": 395,
      "loc": {
        "start": {
          "line": 14,
          "column": 24
        },
        "end": {
          "line": 14,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 404,
      "end": 408,
      "loc": {
        "start": {
          "line": 15,
          "column": 8
        },
        "end": {
          "line": 15,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "arcmiddle",
      "start": 409,
      "end": 420,
      "loc": {
        "start": {
          "line": 15,
          "column": 13
        },
        "end": {
          "line": 15,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 420,
      "end": 421,
      "loc": {
        "start": {
          "line": 15,
          "column": 24
        },
        "end": {
          "line": 15,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 430,
      "end": 434,
      "loc": {
        "start": {
          "line": 16,
          "column": 8
        },
        "end": {
          "line": 16,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "arctangent",
      "start": 435,
      "end": 447,
      "loc": {
        "start": {
          "line": 16,
          "column": 13
        },
        "end": {
          "line": 16,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 447,
      "end": 448,
      "loc": {
        "start": {
          "line": 16,
          "column": 25
        },
        "end": {
          "line": 16,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 457,
      "end": 461,
      "loc": {
        "start": {
          "line": 17,
          "column": 8
        },
        "end": {
          "line": 17,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "circle",
      "start": 462,
      "end": 470,
      "loc": {
        "start": {
          "line": 17,
          "column": 13
        },
        "end": {
          "line": 17,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 470,
      "end": 471,
      "loc": {
        "start": {
          "line": 17,
          "column": 21
        },
        "end": {
          "line": 17,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 484,
      "end": 490,
      "loc": {
        "start": {
          "line": 18,
          "column": 12
        },
        "end": {
          "line": 18,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DrawHandler",
      "start": 491,
      "end": 502,
      "loc": {
        "start": {
          "line": 18,
          "column": 19
        },
        "end": {
          "line": 18,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 502,
      "end": 503,
      "loc": {
        "start": {
          "line": 18,
          "column": 30
        },
        "end": {
          "line": 18,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 512,
      "end": 516,
      "loc": {
        "start": {
          "line": 19,
          "column": 8
        },
        "end": {
          "line": 19,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "angle",
      "start": 517,
      "end": 524,
      "loc": {
        "start": {
          "line": 19,
          "column": 13
        },
        "end": {
          "line": 19,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 524,
      "end": 525,
      "loc": {
        "start": {
          "line": 19,
          "column": 20
        },
        "end": {
          "line": 19,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 538,
      "end": 544,
      "loc": {
        "start": {
          "line": 20,
          "column": 12
        },
        "end": {
          "line": 20,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "AngleHandler",
      "start": 545,
      "end": 557,
      "loc": {
        "start": {
          "line": 20,
          "column": 19
        },
        "end": {
          "line": 20,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 557,
      "end": 558,
      "loc": {
        "start": {
          "line": 20,
          "column": 31
        },
        "end": {
          "line": 20,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 567,
      "end": 571,
      "loc": {
        "start": {
          "line": 21,
          "column": 8
        },
        "end": {
          "line": 21,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "fillet",
      "start": 572,
      "end": 580,
      "loc": {
        "start": {
          "line": 21,
          "column": 13
        },
        "end": {
          "line": 21,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 580,
      "end": 581,
      "loc": {
        "start": {
          "line": 21,
          "column": 21
        },
        "end": {
          "line": 21,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 594,
      "end": 600,
      "loc": {
        "start": {
          "line": 22,
          "column": 12
        },
        "end": {
          "line": 22,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "FilletHandler",
      "start": 601,
      "end": 614,
      "loc": {
        "start": {
          "line": 22,
          "column": 19
        },
        "end": {
          "line": 22,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 614,
      "end": 615,
      "loc": {
        "start": {
          "line": 22,
          "column": 32
        },
        "end": {
          "line": 22,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 624,
      "end": 628,
      "loc": {
        "start": {
          "line": 23,
          "column": 8
        },
        "end": {
          "line": 23,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "duplicate",
      "start": 629,
      "end": 640,
      "loc": {
        "start": {
          "line": 23,
          "column": 13
        },
        "end": {
          "line": 23,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 640,
      "end": 641,
      "loc": {
        "start": {
          "line": 23,
          "column": 24
        },
        "end": {
          "line": 23,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 654,
      "end": 660,
      "loc": {
        "start": {
          "line": 24,
          "column": 12
        },
        "end": {
          "line": 24,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DuplicateHandler",
      "start": 661,
      "end": 677,
      "loc": {
        "start": {
          "line": 24,
          "column": 19
        },
        "end": {
          "line": 24,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 677,
      "end": 678,
      "loc": {
        "start": {
          "line": 24,
          "column": 35
        },
        "end": {
          "line": 24,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "case",
        "keyword": "case",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "case",
      "start": 687,
      "end": 691,
      "loc": {
        "start": {
          "line": 25,
          "column": 8
        },
        "end": {
          "line": 25,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "trim",
      "start": 692,
      "end": 698,
      "loc": {
        "start": {
          "line": 25,
          "column": 13
        },
        "end": {
          "line": 25,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 698,
      "end": 699,
      "loc": {
        "start": {
          "line": 25,
          "column": 19
        },
        "end": {
          "line": 25,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 712,
      "end": 718,
      "loc": {
        "start": {
          "line": 26,
          "column": 12
        },
        "end": {
          "line": 26,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "TrimHandler",
      "start": 719,
      "end": 730,
      "loc": {
        "start": {
          "line": 26,
          "column": 19
        },
        "end": {
          "line": 26,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 730,
      "end": 731,
      "loc": {
        "start": {
          "line": 26,
          "column": 30
        },
        "end": {
          "line": 26,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 736,
      "end": 737,
      "loc": {
        "start": {
          "line": 27,
          "column": 4
        },
        "end": {
          "line": 27,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 738,
      "end": 739,
      "loc": {
        "start": {
          "line": 28,
          "column": 0
        },
        "end": {
          "line": 28,
          "column": 1
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " destroy oldHandler (if needed) and return the new handler",
      "start": 741,
      "end": 801,
      "loc": {
        "start": {
          "line": 30,
          "column": 0
        },
        "end": {
          "line": 30,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 802,
      "end": 808,
      "loc": {
        "start": {
          "line": 31,
          "column": 0
        },
        "end": {
          "line": 31,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "default",
        "keyword": "default",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "default",
      "start": 809,
      "end": 816,
      "loc": {
        "start": {
          "line": 31,
          "column": 7
        },
        "end": {
          "line": 31,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 817,
      "end": 825,
      "loc": {
        "start": {
          "line": 31,
          "column": 15
        },
        "end": {
          "line": 31,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Handler",
      "start": 826,
      "end": 833,
      "loc": {
        "start": {
          "line": 31,
          "column": 24
        },
        "end": {
          "line": 31,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 833,
      "end": 834,
      "loc": {
        "start": {
          "line": 31,
          "column": 31
        },
        "end": {
          "line": 31,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketcher",
      "start": 834,
      "end": 842,
      "loc": {
        "start": {
          "line": 31,
          "column": 32
        },
        "end": {
          "line": 31,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 842,
      "end": 843,
      "loc": {
        "start": {
          "line": 31,
          "column": 40
        },
        "end": {
          "line": 31,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 844,
      "end": 848,
      "loc": {
        "start": {
          "line": 31,
          "column": 42
        },
        "end": {
          "line": 31,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 848,
      "end": 849,
      "loc": {
        "start": {
          "line": 31,
          "column": 46
        },
        "end": {
          "line": 31,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 850,
      "end": 860,
      "loc": {
        "start": {
          "line": 31,
          "column": 48
        },
        "end": {
          "line": 31,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 860,
      "end": 861,
      "loc": {
        "start": {
          "line": 31,
          "column": 58
        },
        "end": {
          "line": 31,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 862,
      "end": 863,
      "loc": {
        "start": {
          "line": 31,
          "column": 60
        },
        "end": {
          "line": 31,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 868,
      "end": 873,
      "loc": {
        "start": {
          "line": 32,
          "column": 4
        },
        "end": {
          "line": 32,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldClass",
      "start": 874,
      "end": 882,
      "loc": {
        "start": {
          "line": 32,
          "column": 10
        },
        "end": {
          "line": 32,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 883,
      "end": 884,
      "loc": {
        "start": {
          "line": 32,
          "column": 19
        },
        "end": {
          "line": 32,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHandlerClass",
      "start": 885,
      "end": 900,
      "loc": {
        "start": {
          "line": 32,
          "column": 21
        },
        "end": {
          "line": 32,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 900,
      "end": 901,
      "loc": {
        "start": {
          "line": 32,
          "column": 36
        },
        "end": {
          "line": 32,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 901,
      "end": 911,
      "loc": {
        "start": {
          "line": 32,
          "column": 37
        },
        "end": {
          "line": 32,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 912,
      "end": 914,
      "loc": {
        "start": {
          "line": 32,
          "column": 48
        },
        "end": {
          "line": 32,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 915,
      "end": 925,
      "loc": {
        "start": {
          "line": 32,
          "column": 51
        },
        "end": {
          "line": 32,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 925,
      "end": 926,
      "loc": {
        "start": {
          "line": 32,
          "column": 61
        },
        "end": {
          "line": 32,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 926,
      "end": 930,
      "loc": {
        "start": {
          "line": 32,
          "column": 62
        },
        "end": {
          "line": 32,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 930,
      "end": 931,
      "loc": {
        "start": {
          "line": 32,
          "column": 66
        },
        "end": {
          "line": 32,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 931,
      "end": 932,
      "loc": {
        "start": {
          "line": 32,
          "column": 67
        },
        "end": {
          "line": 32,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "newClass",
      "start": 933,
      "end": 941,
      "loc": {
        "start": {
          "line": 32,
          "column": 69
        },
        "end": {
          "line": 32,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 942,
      "end": 943,
      "loc": {
        "start": {
          "line": 32,
          "column": 78
        },
        "end": {
          "line": 32,
          "column": 79
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getHandlerClass",
      "start": 944,
      "end": 959,
      "loc": {
        "start": {
          "line": 32,
          "column": 80
        },
        "end": {
          "line": 32,
          "column": 95
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 959,
      "end": 960,
      "loc": {
        "start": {
          "line": 32,
          "column": 95
        },
        "end": {
          "line": 32,
          "column": 96
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 960,
      "end": 964,
      "loc": {
        "start": {
          "line": 32,
          "column": 96
        },
        "end": {
          "line": 32,
          "column": 100
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 964,
      "end": 965,
      "loc": {
        "start": {
          "line": 32,
          "column": 100
        },
        "end": {
          "line": 32,
          "column": 101
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 965,
      "end": 966,
      "loc": {
        "start": {
          "line": 32,
          "column": 101
        },
        "end": {
          "line": 32,
          "column": 102
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 971,
      "end": 974,
      "loc": {
        "start": {
          "line": 33,
          "column": 4
        },
        "end": {
          "line": 33,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 975,
      "end": 982,
      "loc": {
        "start": {
          "line": 33,
          "column": 8
        },
        "end": {
          "line": 33,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 983,
      "end": 984,
      "loc": {
        "start": {
          "line": 33,
          "column": 16
        },
        "end": {
          "line": 33,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 985,
      "end": 995,
      "loc": {
        "start": {
          "line": 33,
          "column": 18
        },
        "end": {
          "line": 33,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 995,
      "end": 996,
      "loc": {
        "start": {
          "line": 33,
          "column": 28
        },
        "end": {
          "line": 33,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1001,
      "end": 1003,
      "loc": {
        "start": {
          "line": 34,
          "column": 4
        },
        "end": {
          "line": 34,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1004,
      "end": 1005,
      "loc": {
        "start": {
          "line": 34,
          "column": 7
        },
        "end": {
          "line": 34,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldClass",
      "start": 1005,
      "end": 1013,
      "loc": {
        "start": {
          "line": 34,
          "column": 8
        },
        "end": {
          "line": 34,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "!==",
      "start": 1014,
      "end": 1017,
      "loc": {
        "start": {
          "line": 34,
          "column": 17
        },
        "end": {
          "line": 34,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "newClass",
      "start": 1018,
      "end": 1026,
      "loc": {
        "start": {
          "line": 34,
          "column": 21
        },
        "end": {
          "line": 34,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1026,
      "end": 1027,
      "loc": {
        "start": {
          "line": 34,
          "column": 29
        },
        "end": {
          "line": 34,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1028,
      "end": 1029,
      "loc": {
        "start": {
          "line": 34,
          "column": 31
        },
        "end": {
          "line": 34,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 1038,
      "end": 1048,
      "loc": {
        "start": {
          "line": 35,
          "column": 8
        },
        "end": {
          "line": 35,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 1049,
      "end": 1051,
      "loc": {
        "start": {
          "line": 35,
          "column": 19
        },
        "end": {
          "line": 35,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "oldHandler",
      "start": 1052,
      "end": 1062,
      "loc": {
        "start": {
          "line": 35,
          "column": 22
        },
        "end": {
          "line": 35,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1062,
      "end": 1063,
      "loc": {
        "start": {
          "line": 35,
          "column": 32
        },
        "end": {
          "line": 35,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "destroy",
      "start": 1063,
      "end": 1070,
      "loc": {
        "start": {
          "line": 35,
          "column": 33
        },
        "end": {
          "line": 35,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1070,
      "end": 1071,
      "loc": {
        "start": {
          "line": 35,
          "column": 40
        },
        "end": {
          "line": 35,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1071,
      "end": 1072,
      "loc": {
        "start": {
          "line": 35,
          "column": 41
        },
        "end": {
          "line": 35,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1072,
      "end": 1073,
      "loc": {
        "start": {
          "line": 35,
          "column": 42
        },
        "end": {
          "line": 35,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 1082,
      "end": 1089,
      "loc": {
        "start": {
          "line": 36,
          "column": 8
        },
        "end": {
          "line": 36,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1090,
      "end": 1091,
      "loc": {
        "start": {
          "line": 36,
          "column": 16
        },
        "end": {
          "line": 36,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 1092,
      "end": 1095,
      "loc": {
        "start": {
          "line": 36,
          "column": 18
        },
        "end": {
          "line": 36,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "newClass",
      "start": 1096,
      "end": 1104,
      "loc": {
        "start": {
          "line": 36,
          "column": 22
        },
        "end": {
          "line": 36,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1104,
      "end": 1105,
      "loc": {
        "start": {
          "line": 36,
          "column": 30
        },
        "end": {
          "line": 36,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sketcher",
      "start": 1105,
      "end": 1113,
      "loc": {
        "start": {
          "line": 36,
          "column": 31
        },
        "end": {
          "line": 36,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1113,
      "end": 1114,
      "loc": {
        "start": {
          "line": 36,
          "column": 39
        },
        "end": {
          "line": 36,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 1115,
      "end": 1119,
      "loc": {
        "start": {
          "line": 36,
          "column": 41
        },
        "end": {
          "line": 36,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1119,
      "end": 1120,
      "loc": {
        "start": {
          "line": 36,
          "column": 45
        },
        "end": {
          "line": 36,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1120,
      "end": 1121,
      "loc": {
        "start": {
          "line": 36,
          "column": 46
        },
        "end": {
          "line": 36,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 1130,
      "end": 1137,
      "loc": {
        "start": {
          "line": 37,
          "column": 8
        },
        "end": {
          "line": 37,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1137,
      "end": 1138,
      "loc": {
        "start": {
          "line": 37,
          "column": 15
        },
        "end": {
          "line": 37,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addInteractions",
      "start": 1138,
      "end": 1153,
      "loc": {
        "start": {
          "line": 37,
          "column": 16
        },
        "end": {
          "line": 37,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1153,
      "end": 1154,
      "loc": {
        "start": {
          "line": 37,
          "column": 31
        },
        "end": {
          "line": 37,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1154,
      "end": 1155,
      "loc": {
        "start": {
          "line": 37,
          "column": 32
        },
        "end": {
          "line": 37,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1155,
      "end": 1156,
      "loc": {
        "start": {
          "line": 37,
          "column": 33
        },
        "end": {
          "line": 37,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1161,
      "end": 1162,
      "loc": {
        "start": {
          "line": 38,
          "column": 4
        },
        "end": {
          "line": 38,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1167,
      "end": 1169,
      "loc": {
        "start": {
          "line": 39,
          "column": 4
        },
        "end": {
          "line": 39,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1170,
      "end": 1171,
      "loc": {
        "start": {
          "line": 39,
          "column": 7
        },
        "end": {
          "line": 39,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "newClass",
      "start": 1171,
      "end": 1179,
      "loc": {
        "start": {
          "line": 39,
          "column": 8
        },
        "end": {
          "line": 39,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 1180,
      "end": 1183,
      "loc": {
        "start": {
          "line": 39,
          "column": 17
        },
        "end": {
          "line": 39,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DrawHandler",
      "start": 1184,
      "end": 1195,
      "loc": {
        "start": {
          "line": 39,
          "column": 21
        },
        "end": {
          "line": 39,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1195,
      "end": 1196,
      "loc": {
        "start": {
          "line": 39,
          "column": 32
        },
        "end": {
          "line": 39,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 1197,
      "end": 1204,
      "loc": {
        "start": {
          "line": 39,
          "column": 34
        },
        "end": {
          "line": 39,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1204,
      "end": 1205,
      "loc": {
        "start": {
          "line": 39,
          "column": 41
        },
        "end": {
          "line": 39,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "switchMode",
      "start": 1205,
      "end": 1215,
      "loc": {
        "start": {
          "line": 39,
          "column": 42
        },
        "end": {
          "line": 39,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1215,
      "end": 1216,
      "loc": {
        "start": {
          "line": 39,
          "column": 52
        },
        "end": {
          "line": 39,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "name",
      "start": 1216,
      "end": 1220,
      "loc": {
        "start": {
          "line": 39,
          "column": 53
        },
        "end": {
          "line": 39,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1220,
      "end": 1221,
      "loc": {
        "start": {
          "line": 39,
          "column": 57
        },
        "end": {
          "line": 39,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1221,
      "end": 1222,
      "loc": {
        "start": {
          "line": 39,
          "column": 58
        },
        "end": {
          "line": 39,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 1227,
      "end": 1233,
      "loc": {
        "start": {
          "line": 40,
          "column": 4
        },
        "end": {
          "line": 40,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 1234,
      "end": 1241,
      "loc": {
        "start": {
          "line": 40,
          "column": 11
        },
        "end": {
          "line": 40,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1241,
      "end": 1242,
      "loc": {
        "start": {
          "line": 40,
          "column": 18
        },
        "end": {
          "line": 40,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1243,
      "end": 1244,
      "loc": {
        "start": {
          "line": 41,
          "column": 0
        },
        "end": {
          "line": 41,
          "column": 1
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Support hot reloading",
      "start": 1246,
      "end": 1270,
      "loc": {
        "start": {
          "line": 43,
          "column": 0
        },
        "end": {
          "line": 43,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1271,
      "end": 1273,
      "loc": {
        "start": {
          "line": 44,
          "column": 0
        },
        "end": {
          "line": 44,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1274,
      "end": 1275,
      "loc": {
        "start": {
          "line": 44,
          "column": 3
        },
        "end": {
          "line": 44,
          "column": 4
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "module",
      "start": 1275,
      "end": 1281,
      "loc": {
        "start": {
          "line": 44,
          "column": 4
        },
        "end": {
          "line": 44,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1281,
      "end": 1282,
      "loc": {
        "start": {
          "line": 44,
          "column": 10
        },
        "end": {
          "line": 44,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hot",
      "start": 1282,
      "end": 1285,
      "loc": {
        "start": {
          "line": 44,
          "column": 11
        },
        "end": {
          "line": 44,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1285,
      "end": 1286,
      "loc": {
        "start": {
          "line": 44,
          "column": 14
        },
        "end": {
          "line": 44,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "module",
      "start": 1287,
      "end": 1293,
      "loc": {
        "start": {
          "line": 44,
          "column": 16
        },
        "end": {
          "line": 44,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1293,
      "end": 1294,
      "loc": {
        "start": {
          "line": 44,
          "column": 22
        },
        "end": {
          "line": 44,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hot",
      "start": 1294,
      "end": 1297,
      "loc": {
        "start": {
          "line": 44,
          "column": 23
        },
        "end": {
          "line": 44,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1297,
      "end": 1298,
      "loc": {
        "start": {
          "line": 44,
          "column": 26
        },
        "end": {
          "line": 44,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "accept",
      "start": 1298,
      "end": 1304,
      "loc": {
        "start": {
          "line": 44,
          "column": 27
        },
        "end": {
          "line": 44,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1304,
      "end": 1305,
      "loc": {
        "start": {
          "line": 44,
          "column": 33
        },
        "end": {
          "line": 44,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1305,
      "end": 1306,
      "loc": {
        "start": {
          "line": 44,
          "column": 34
        },
        "end": {
          "line": 44,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./drag",
      "start": 1306,
      "end": 1314,
      "loc": {
        "start": {
          "line": 44,
          "column": 35
        },
        "end": {
          "line": 44,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1314,
      "end": 1315,
      "loc": {
        "start": {
          "line": 44,
          "column": 43
        },
        "end": {
          "line": 44,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./draw",
      "start": 1316,
      "end": 1324,
      "loc": {
        "start": {
          "line": 44,
          "column": 45
        },
        "end": {
          "line": 44,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1324,
      "end": 1325,
      "loc": {
        "start": {
          "line": 44,
          "column": 53
        },
        "end": {
          "line": 44,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./angle",
      "start": 1326,
      "end": 1335,
      "loc": {
        "start": {
          "line": 44,
          "column": 55
        },
        "end": {
          "line": 44,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1335,
      "end": 1336,
      "loc": {
        "start": {
          "line": 44,
          "column": 64
        },
        "end": {
          "line": 44,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./fillet",
      "start": 1337,
      "end": 1347,
      "loc": {
        "start": {
          "line": 44,
          "column": 66
        },
        "end": {
          "line": 44,
          "column": 76
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1347,
      "end": 1348,
      "loc": {
        "start": {
          "line": 44,
          "column": 76
        },
        "end": {
          "line": 44,
          "column": 77
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./duplicate",
      "start": 1349,
      "end": 1362,
      "loc": {
        "start": {
          "line": 44,
          "column": 78
        },
        "end": {
          "line": 44,
          "column": 91
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1362,
      "end": 1363,
      "loc": {
        "start": {
          "line": 44,
          "column": 91
        },
        "end": {
          "line": 44,
          "column": 92
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./trim",
      "start": 1364,
      "end": 1372,
      "loc": {
        "start": {
          "line": 44,
          "column": 93
        },
        "end": {
          "line": 44,
          "column": 101
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1372,
      "end": 1373,
      "loc": {
        "start": {
          "line": 44,
          "column": 101
        },
        "end": {
          "line": 44,
          "column": 102
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1373,
      "end": 1374,
      "loc": {
        "start": {
          "line": 44,
          "column": 102
        },
        "end": {
          "line": 44,
          "column": 103
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1374,
      "end": 1375,
      "loc": {
        "start": {
          "line": 44,
          "column": 103
        },
        "end": {
          "line": 44,
          "column": 104
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1376,
      "end": 1376,
      "loc": {
        "start": {
          "line": 45,
          "column": 0
        },
        "end": {
          "line": 45,
          "column": 0
        }
      }
    }
  ]
}