  e.link = VirtualizedTreeLayout._cachedLinks.pop() || new go.Link();
      });
      super.setPortSpots(v);
      v.destinationEdges.each((e) => {
        if (e.data) {
          e.data.fromSpot = e.link.fromSpot.copy();
          e.data.toSpot = e.link.toSpot.copy();
        }
        VirtualizedTreeLayout._cachedLinks.push(e.link);
        e.link = null;
      });
    }
  }
  // end VirtualizedTreeLayout class

  class VirtualizedTreeNetwork extends go.TreeNetwork {
    constructor(layout) {
      super(