code: func removeNodes(toRemove nodes, bridge, residual bool) {
  	for _, n := range toRemove {
  		for ei := range n.in {
  			delete(ei.out, n)
  		}
  		if bridge {
  			for ei, wi := range n.in {
  				for eo, wo := range n.out {
  					var weight int64
  					if n.cum != 0 {
  						weight = int64(float64(wo.weight) * (float64(wi.weight) / float64(n.cum)))
  					}
  					bumpWeight(ei, eo, weight, residual)
  				}
  			}
  		}
  		for eo := range n.out {
  			delete(eo.in, n)
  		}
  	}
  }
docs: // removeNodes removes nodes from a report, optionally bridging
  // connections between in/out edges and spreading out their weights
  // proportionally. residual marks new bridge edges as residual
  // (dotted).