        throw new TypeError('missing argument 0 when calling                     function ' + objname + '.' + name);
              }
              return globalobj.prototype[name].apply(obj,                   Array.prototype.slice.call(arguments, 1));
            })
          });
        }
      });
    }
  }
}(this, {String: ['substr', 'toUpperCase']}));