code: def register_structure_hook(self, cl, func):
          
          if is_union_type(cl):
              self._union_registry[cl] = func
          else:
              self._structure_func.register_cls_list([(cl, func)])
docs: Register a primitive-to-class converter function for a type.
  
          The converter function should take two arguments:
            * a Python object to be converted,
            * the type to convert to
  
          and return the instance of the class. The type may seem redundant, but
          is sometimes needed (for example, when dealing with generic classes).