Made semantic analyzer be called even for cached ASTs (since underlying ...

...runtime may change), made identifiers() use semantic analyzer instead of interpreter