code: def recurse(self, value, max_depth=6, _depth=0, **kwargs):
          
          string_max_length = kwargs.get('string_max_length', None)
  
          _depth += 1
          if _depth >= max_depth:
              try:
                  value = text_type(repr(value))[:string_max_length]
              except Exception as e:
                  import traceback
                  traceback.print_exc()
                  self.manager.logger.exception(e)
                  return text_type(type(value))
          return self.manager.transform(value, max_depth=max_depth,
                                        _depth=_depth, **kwargs)
docs: Given ``value``, recurse (using the parent serializer) to handle
          coercing of newly defined values.