public ReteTuple remove(final ReteTuple tuple) {
final int hashCode = tuple.hashCode();
final int index = indexOf( hashCode,
this.table.length );
ReteTuple previous = (ReteTuple) this.table[index];
ReteTuple current = previous;
while ( current != null ) {
final ReteTuple next = (ReteTuple) current.getNext();
if ( hashCode == current.hashCode() && tuple.equals( current ) ) {
if ( previous == current ) {
this.table[index] = next;
} else {
previous.setNext( next );