Currently, getApplicationTransactionCommentObject() throws by default. Subclasses must override it to return null to indicate that they don't support comments.
This is silly, and leads to a bunch of code that does a try / catch around it, and at least some code (here, transaction.search) which doesn't try / catch and gets the wrong behavior as a result.
Just make it return null by default, meaning "no support for comments". Then remove the try / catch stuff and all the return null implementations.