anchor.diff:  
   class EdgeHandlerCellMarker extends CellMarker {
   
  -  final mxEdgeHandler edgeHandler;
  -
  -  EdgeHandlerCellMarker(EdgeHandler mxEdgeHandler, GraphComponent graphComponent) : super(graphComponent) {
  -    edgeHandler = mxEdgeHandler;
  -  }
  +  final EdgeHandler edgeHandler;
  +
  +  EdgeHandlerCellMarker(this.edgeHandler, GraphComponent graphComponent) : super(graphComponent);
   
     // Only returns edges if they are connectable and never returns
     // the edge that is currently being modified
  -  Object getCell(MouseEvent e) {
  -    mxGraph graph = graphComponent.getGraph();
  -    mxIGraphModel model = graph.getModel();
  -    Object cell = super.getCell(e);
  -
  -    if (cell == edgeHandler.state.getCell() || (!graph.isConnectableEdges() && model.isEdge(cell))) {
  +  Object _getCell(event.MouseEvent e) {
  +    Graph graph = _graphComponent.getGraph();
  +    IGraphModel model = graph.getModel();
  +    Object cell = super._getCell(e);
  +
  +    if (cell == edgeHandler._state.getCell() || (!graph.isConnectableEdges() && model.isEdge(cell))) {
         cell = null;
       }
   
  
positive.code:   EdgeHandlerPreview(this.edgeHandler);
  
  
    void paint(Graphics g)
    {
      super.paint(g);
  
      if (!edgeHandler.isLabel(edgeHandler.index) && edgeHandler.p != null)
      {
        ((Graphics2D) g).setStroke(mxSwingConstants.PREVIEW_STROKE);
  
        if (edgeHandler.isSource(edgeHandler.index) || edgeHandler.isTarget(edgeHandler.index))
        {
          if (edgeHandler.marker.hasValidState()
              || edgeHandler.graphComponent.getGraph()
                  .isAllowDanglingEdges())
          {
            g.setColor(mxSwingConstants.DEFAULT_VALID_COLOR);
          }
          else
          {
            g.setColor(mxSwingConstants.DEFAULT_INVALID_COLOR);
          }
        }
        else
        {
          g.setColor(Color.BLACK);
        }
  
        Point origin = getLocation();
        Point last = edgeHandler.p[0];
  
        for (int i = 1; i < edgeHandler.p.length; i++)
        {
          g.drawLine(last.x - origin.x, last.y - origin.y, edgeHandler.p[i].x
              - origin.x, edgeHandler.p[i].y - origin.y);
          last = edgeHandler.p[i];
        }
      }
    }
  }
negative.code:     return SwingConstants.EDGE_SELECTION_STROKE;
    }
  
    void paint(CanvasRenderingContext2D g) {
      CanvasRenderingContext2D g2 = g;
  
      Stroke stroke = g2.getStroke();
      g2.setStroke(getSelectionStroke());
  