class_docstr: Single-dispatch generic method descriptor.
  
  Supports wrapping existing descriptors and handles non-descriptor
  callables as instance methods.
class_docstr_tok: ["Single-dispatch","generic","method","descriptor",".","Supports","wrapping","existing","descriptors","and","handles","non-descriptor","callables","as","instance","methods","."]
docstr: generic_method.register(cls, func) -> func
  
  Registers a new implementation for the given *cls* on a *generic_method*.
docstr_tok: ["generic_method.register","(","cls",",","func",")","-",">","func","Registers","a","new","implementation","for","the","given","*","cls","*","on","a","*","generic_method","*","."]
code: def register(self, cls, method=None):
      """generic_method.register(cls, func) -> func
  
      Registers a new implementation for the given *cls* on a *generic_method*.
      """
      return self.dispatcher.register(cls, func=method)
  
imports: from abc import get_cache_token
  from collections import namedtuple
  from reprlib import recursive_repr
  from _thread import RLock
label_desc: Use image node_id 2 for calling the singledispatchmethod obj's underlying member method code with example usage: obj.register(cls, method) and returns: self