Using generation context directly is not scalable to maintain.
There should be a contextmanager class that handles all setting and getting of properties through the generation context.
This will make it possible to analyse what properties are being accessed where in the code.