docs: static void removeSingleConnections( List<Node> cluster ) {
  		List<Node> open = new ArrayList<>();
  		List<Node> future = new ArrayList<>();
  
  		open.addAll(cluster);
  
  		while( !open.isEmpty() ) {
  			for (int i = open.size()-1; i >= 0; i--) {
  				Node n = open.get(i);
  
  				if( n.connections.size == 1 ) {
  					// clear it's connections and remove it from the cluster
  					int index = findNode(n.which,cluster);
  					cluster.remove(index);
  
  					// Remove the reference to this node from its one connection
  					int parent = findNode(n.connections.get(0),cluster);
  					n.connections.reset();
  					if( parent == -1 ) throw new RuntimeException("BUG!");
  					Node p = cluster.get(parent);
  					int edge = p.connections.indexOf(n.which);
  					if( edge == -1 ) throw new RuntimeException("BUG!");
  					p.connections.remove(edge);
  
  					// if the parent now only has one connection
  					if( p.connections.size == 1) {
  						future.add(p);
  					}
  				}
  			}
  			open.clear();
  			List<Node> tmp = open;
  			open = future;
  			future = tmp;
  		}
  	}