changerequest soot.util.HashChain

the behavior is more strict and less "surprising".

tow examples:
follows(b,a) could raise a NoSuchElementException ; follows(a,b) does not.
iterator(a,b) works fine ; iterator(b,a) throws an NoSuchElementException

the behavior is changes in the following way:
the iterator will always stop at the last element (the biggest change i think, but i did'nt found a situation where this is a problem)
if an element to insert is null a NullPointerException will be thrown ( see also http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#add(E) -> NullPointerException)
if selecting an entry that is not part of the chain a NoSuchElementException will be thrown
if you try to add an element that is already part of the chain a RuntimeException is thrown (maybe IllegalArgumentException would be better)