docs: def thread_local_property(name):
      '''Creates a thread local ``property``.'''
      name = '_thread_local_' + name
  
      def fget(self):
          try:
              return getattr(self, name).value
          except AttributeError:
              return None
  
      def fset(self, value):
          getattr(self, name).value = value
  
      return property(fget=fget, fset=fset)