docs: function Chain(fns) {
  	if (fns instanceof Array)
  		this.fns = fns.map(this.wrap);
  	else
  		this.fns = slice.call(arguments).map(this.wrap);
  
  	var that = this;
  	this.bind_after_env = false;
  	this.name = '(anonymous chain)';
  
  	// To simplify making the length (which indicates argument count) reflect what the first function needs
  	this.__defineGetter__('length', function() {
  		if (that.fns[0])
  			return that.fns[0].params;
  		return 0;
  	});
  }