...
Why is the class called TransactionEvent instead of Transaction? Is there such a thing as a transaction that cannot be said to have happened? Also, given 'event' has a special meaning in finance, if you are going to call this out, should it not be called TransactionOccurrence and be a subcalss of Occurrence, not OccurrenceKind (they do have dates)?
Recommended Changes
Incorrect subclass relationships.
...