text: // Safe toJSON
  module.exports =
      function getSafe(self, uuid) {
          if (typeof self === 'object' || typeof self === 'function') {
              var safe = {}
          }
          if (Array.isArray(self)) {
              var safe = []
          }
  
          var recurse = []
  
          Object.defineProperty(self, uuid, {})
  
          var attrs = Object.keys(self).filter(function (i) {
              if (i === uuid) {
                  return false
              }
              if ((typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) {
                  return true
              }
              return !(Object.getOwnPropertyDescriptor(self[i], uuid))
          })
  
          for (var i = 0; i < attrs.length; i++) {
              if ((typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') ||
                  self[attrs[i]] === null
              ) {
                  safe[attrs[i]] = self[attrs[i]]
              } else {
                  recurse.push(attrs[i])
                  Object.defineProperty(self[attrs[i]], uuid, {})
              }
          }
  
          for (var i = 0; i < recurse.length; i++) {
              safe[recurse[i]] = getSafe(self[recurse[i]], uuid)
          }
  
          return safe
      }