When trying to clean up my memory when using the a class that overrides Display (we use prefuse in an MDI environment), I was seeing that my classes were still held in memory, due to m_predicate in Display.java holding on to my class' reference.
To fix it, I added a method in AbstractExpression.java: removeAllExpressionListeners() that just clears m_listeners, and then call that method when I am cleaning up my Display.