Switched from WeakKeyDictionary to actually storing behaviors using labeled descriptors