Here's a patch that makes the suggested change (txtab.diff). The patch looks somewhat messy because much code is moved up one indentation level because an if statement is removed. I've therefore also attached a patch generated with svn diff --extensions="-ub" which ignores whitespace changes, to make it easier to see exactly what has changed (this patch is called txtab-noblanks.diff).
The patch changes TransactionTable.add() in the following ways:
1) It does not call findTransactionEntry(id) first and checks the return value.
2) The return value from trans.put(id, ent) is captured, and an assert is added to verify that it is null (that is, the entry was not already there).
3) An assert that checked that the existing entry had the same exclusion as the one we attempt to add, is removed. This is because we now assert that there is no existing entry, which is a stricter condition.
TransactionTable.add() uses a mix of tabs and spaces for indentation. I chose to use spaces consistently for my changes.
All the regression tests ran cleanly with the patch.