public class Graph {
	public Graph(String startName) {
	   this.start = new Node(startName);
	}
	public Node getStart() {
	   return start;
	}
	public class Node {
	   public Node(String name) {
	   	this.name=name;
	   }
	   public int hashCode() {
	   	return name.hashCode();
	   }
	   public boolean equals(Object o) {
		   if (!(o instanceof Node))
		      return false;
		   return name.equals(((Node)o).name);
	   }
	   public void add(Node dest) {
	  	 transitions.add(dest);
	   }
	   public Iterator<Node> transitions() {
	  	 return transitions.iterator();
	   }
	   private final String name;
	   private final ArrayList<Node> transitions =  new ArrayList<Node>();
	}
	private final Node start;
}