`Objects.qll` has support for identifying objects with different storage durations (static, thread local, allocated, and automatic). However, its thread local object support is limited to `_Thread_local` variables. Ideally, a `tss_t` variable would be recognizable as two objects: - One object representing the variable holding the tss_t key. Usually this is an object with static lifetime. - Another object identity for the thread local behind the `tss_t`. Unfortunately, `tss_t` currently extends `Element`, which means that it can't have two implementations of the `ObjectIdentity` class. Alternatively, calls to `tss_get()` could be considered `ObjectIdentity`s, however, that doesn't match the intention of the `ObjectIdentity` class/library, as the threadlocal is really identified by the `tss_t`. The threadlocal object _could_ be identified by the `tss_create` call (similarly to how we identify dynamic memory via `malloc` calls). But it probably makes more sense to have `ObjectIdentity` extend `Locatable` and then have a `tss_t` variable produce two `ObjectIdenty`s. Otherwise the tss_t object class will closely match the malloc object class, since malloc returns a pointer to the dynamic memory just like `tss_get()` returns a pointer to the thread local. Additional refactoring to share code here will be required.