code: def new(self, string=None, *args, **kwargs):
          
          if len(self):
              hobj = _ChainedHashAlgorithm(self, *args, **kwargs)
          else:
              hobj = _NopHashAlgorithm(*args, **kwargs)
          if string is not None:
              hobj.update(string)
          return hobj
docs: Returns a `_ChainedHashAlgorithm` if the underlying tuple
          (specifying the list of algorithms) is not empty, otherwise a
          `_NopHashAlgorithm` instance is returned.