anchor.diff:    bool fixup() {
       if (this.tmpPoint != null) {
         this.tmpPoint = null;
  -      this.points[this.points.length - 1] = this.lock(this.points.last, compareTo: points.first);
  +      this.points[this.points.length - 1] = this.lock(this.points.last, compareTo: this.points.first);
       }
   
       bool lastWasVert = this.isVertEdge(0);
  -    for (int i = 1; i < points.length; i++) {
  +    for (int i = 1; i < this.points.length; i++) {
         print("$i : $lastWasVert : ${this.isVertEdge(i)}");
         if (this.isVertEdge(i) == lastWasVert) {
  -        points.removeAt(i);
  +        this.points.removeAt(i);
           i--;
         } else {
           lastWasVert = !lastWasVert;
  
positive.code:       return;
  
      g.save();
      g.strokeStyle = 'black';
      g.moveTo(points[0].x, points[0].y);
      points.sublist(1).forEach((p) => g.lineTo(p.x, p.y));
      g.lineTo(tmpPoint.x, tmpPoint.y);
  
negative.code:     }
  
      if (selectedEdge != null) {
        int next = (selectedEdge+1) % this.points.length;
        g.beginPath();
        g.moveTo(points[selectedEdge].x, this.points[selectedEdge].y);
        g.lineTo(points[next].x, this.points[next].y);
        g.closePath();
        g.lineWidth = 3;
        g.stroke();
  