Two related changes:
a) It would be clearer if ignoreCache was called ignoreSimplified - since it is also use to suppress whether or not a simplified expression that does not come from the cache is used.
b) The code in parseAttribute should only create a simplified definition if it is actually going to be used. I think that means the test
possibly with a new ctx method ctx.createSimplified()