Details
Description
LockEngine takes too much responsibility, some functions should be separated. The TypeInfo class have some responsibility of cache handling and locking. In order to reduce the complexity of LockEngine, the TypeInfo should be moved out.
Yes, very much in favour of this. As a first step, can I ask you to come up with a UML diagram that depicts the current state as well as your intentions ?