As Anoop Sam John and I discussed, we can implement the filterKeyValue () and transformCell() methods as following to avoid saving transformedCell & referenceCell state in FilterList, and we can avoid the costly cell clone.
For line #1, we need to remember the return code of the sub-filter for its filterKeyValue(). because only INCLUDE* ReturnCode, we need to transformCell for sub-filter.
A new boolean array will be introduced in FilterList. and the cost of maintaining the boolean array will be less than the cost of maintaining the two ref of question cell.