code: function UTF16(transformFunc) {
    this.transformFunc = transformFunc;
    var fillWith = wu.curryable(function (fill, el) {
      return fill(el);
    });
    if (this.transformFunc === null || this.transformFunc === undefined || typeof this.transformFunc !== 'function') {
      this.rcf = new RCF();
      this.fill = this.transformFunc = fillWith(this.rcf.seq());
    } else if (!this.fill) {
      this.fill = fillWith(this.transformFunc);
    }
  
    this.getRange = function (source) {
      switch (typeof source) {
        case 'object':
          if (!source instanceof wu) source = wu(source);
          break;
        case 'array':
          source = wu(source);
          break;
        case 'number':
          source = wu.count().take(source);
          break;
        case 'string':
          source = wu(source.split(''));
          break;
        default:
          source = wu.count().take(rand() & 31);
      }
      return wu.map(this.fill, source);
    };
  }
docs: /*
  generate a length between 1 and 16; - believed to be length of one char and not length of string;
  iterate length times, doing the following steps:
  set last to a random number;
  push last into an array;
  set