docs: function (descriptors) {
          var instance = this,
              m = Object.create(Object.getPrototypeOf(instance)),
              keys = Object.getOwnPropertyNames(instance),
              l = keys.length,
              i = -1,
              key, propDescriptor;
          while (++i < l) {
              key = keys[i];
              if (descriptors) {
                  propDescriptor = Object.getOwnPropertyDescriptor(instance, key);
                  if (!propDescriptor.writable) {
                      m[key] = instance[key];
                  }
                  else {
                      Object.defineProperty(m, key, propDescriptor);
                  }
              }
              else {
                  m[key] = instance[key];
              }
          }
          return m;
      }