code: function (sc, so, ec, eo) {
                  if (arguments.length === 4) {
                      return new WrappedRange(sc, so, ec, eo);
                  } else if (arguments.length === 2) { //collapsed
                      ec = sc;
                      eo = so;
                      return new WrappedRange(sc, so, ec, eo);
                  } else {
                      var wrappedRange = this.createFromSelection();
                      if (!wrappedRange && arguments.length === 1) {
                          wrappedRange = this.createFromNode(arguments[0]);
                          return wrappedRange.collapse(dom.emptyPara === arguments[0].innerHTML);
                      }
                      return wrappedRange;
                  }
              }
docs: create Range Object From arguments or Browser Selection
  
  @param {Node} sc - start container
  @param {Number} so - start offset
  @param {Node} ec - end container
  @param {Number} eo - end offset
  @return {WrappedRange}