private ArrayList<MyEdge> followTheVine(MyNode current) {

		if (current.getDegree() == 0) {
			return null;
		}
		MyNode first;
		MyEdge e = this.outEdges(current).get(0);
		if (current.equals(e.getSource())) {
			first = e.getTarget();
		} else {
			first = e.getSource();
		}
		MyNode next = first;
		MyNode previous = current;
		while (next.getDegree() == 2) {
			ArrayList<MyNode> tmp = new ArrayList<MyNode>(next.getAdj());
			tmp.remove(previous);
			previous = next;
			next = tmp.get(0);
		}
		ArrayList<MyEdge> cuts;
		if (next.getDegree() == 1) {
			
			cuts = null;
		} else {
			cuts = new ArrayList<MyEdge>();
			ArrayList<MyEdge> save = new ArrayList<MyEdge>(this.outEdges(next));
			ArrayList<MyEdge> toRemove = new ArrayList<MyEdge>();
			for (MyEdge candidate : save) {
				if (isNotVine(next, candidate)) {
					cuts.add(candidate);
					toRemove.add(candidate);
				}
			}
			save.removeAll(toRemove);
			if (save.size() >= 2) {
				Collections.sort(save, new WeightComparator());
				save.remove(save.size() - 1);
				save.remove(save.size() - 1);
				cuts.addAll(save);
			} else {
				Collections.sort(cuts, new WeightComparator());
				cuts.remove(cuts.size() - 1);
			}

		}
		return cuts;
	}