anchor.diff:          print('Non-intersecting line with index ${i}, above horizon. Horizon start index: ${horizonStartIndex}, end index: ${horizonEndIndex}');
           
           // TODO: Fix with intersecting lines first
  -//        for (int j = horizonStartIndex; j <= horizonEndIndex; j++) {
  -//          print('Replacing horizon');
  -//          Horizon.removeAt(j);
  -//        }
  -//        Horizon.insert(horizonStartIndex, line);
  -      }
  -    }
  +        for (int j = horizonStartIndex; j <= horizonEndIndex; j++) {
  +          print('Replacing horizon');
  +          //Horizon.removeAt(j);
  +          horizonReplacementLines[j] = line;
  +        }
  +        //Horizon.insert(horizonStartIndex, line);
  +      }
  +    }
  +    
  +    // Replace lines in horizon
  +    horizonReplacementLines.forEach((index, lineSegment) {
  +      Horizon.Line[index] = lineSegment;
  +    });
  +    // Clear horizonReplacementLines 
     }
   }
   
  
positive.code:   return possibleIntersectors;
  }
  
  List<LineGroup> Lines = new List<LineGroup>();
  LineGroup Horizon = new LineGroup();
  void calculateLines() {
    Lines.clear();
    intersectionPoints.clear();
    const int lineCount = 30;
    Math.Random rand = new Math.Random();
    // Start w/ two lines - set up manually
    LineGroup a = new LineGroup();
  
negative.code:     geometry.vertices.add(new Vector3(lineSegment.start.x, lineSegment.start.y + 5, 0.0));
      geometry.vertices.add(new Vector3(lineSegment.end.x, lineSegment.end.y + 5, 0.0));
    }
    print('Drew Horizon, ${Horizon.length} segments');
    var line = new Line(geometry, material);
    scene.add(line);
  }