anchor.diff:    for (int i = 0; i < Lines.length; i++) {
       var material = new LineBasicMaterial(linewidth: 100.0, color: (i == 0 ? 0x0077dd : 0xff0000));
       var geometry = new Geometry();
  -    for (int j = 0; j < Lines[i].length; j++) {
  +    for (int j = 0; j < Lines[i].length - 1; j++) {
         LineSegment line = Lines[i][j];
  -      if (line.visible == false) {
  -        continue;
  +      if (line.visible) {
  +        // TODO: Negate y here?
  +        geometry.vertices.add(new Vector3(line.start.x, line.start.y, 0.0));
  +        geometry.vertices.add(new Vector3(line.end.x, line.end.y, 0.0));
  +        print('Line ${line.toString()} is visible');
  +      } else {
  +        print('Line ${line.toString()} is not visible');
         }
  -      // TODO: Negate y here?
  -      geometry.vertices.add(new Vector3(line.start.x, line.start.y, 0.0));
  -      geometry.vertices.add(new Vector3(line.end.x, line.end.y, 0.0));
       }
       var line = new Line(geometry, material);
       scene.add(line);
  
positive.code:   LineSegment operator [](int index) => Line[index];
    void insert(int index, LineSegment line) => Line.insert(index, line);
    LineSegment removeAt(int index) => Line.removeAt(index);
  }
  
  List<LineGroup> Lines = new List<LineGroup>();
  
negative.code:     newLines.add(new LineSegment(position, this.end));
      return newLines;
    }
    
    toString() => "($start; $end)";
  }
  
  class LineGroup {
  