docs: public void removeNode(N node)
      {
          Pair<HashSet<N>, HashSet<N>> p = nodes.remove(node);
          if(p == null)
              return;
          //Outgoing edges we can ignore removint he node drops them. We need to avoid dangling incoming edges to this node we have removed
          HashSet<N> incomingNodes = p.getIncoming();
          for(N incomingNode : incomingNodes)
              nodes.get(incomingNode).getOutgoing().remove(node);
      }