docs: function Lazy(source) {
      if (source instanceof Array) {
        return new ArrayWrapper(source);
      } else if (typeof source === "string") {
        return new StringWrapper(source);
      } else if (source instanceof Sequence) {
        return source;
      }
  
      if (Lazy.extensions) {
        var extensions = Lazy.extensions, length = extensions.length, result;
        while (!result && length--) {
          result = extensions[length](source);
        }
        if (result) {
          return result;
        }
      }
  
      return new ObjectWrapper(source);
    }