code: function() {
      if (arguments.length === 1) {
        var signatures = arguments[0];
        if (lib.type.isObject(signatures)) {
          var keys = Object.keys(signatures).sort();
          var length = keys.length;
          for (var i = length; i > 0; i--) {
            this.addSignature(keys[i-1],signatures[keys[i-1]]);
          }
        } else if (lib.type.isFunction(signatures)) {
          this.addSignature("_",signatures);
        }
      } else if (arguments.length === 2) {
        var signature = arguments[0];
        var func = arguments[1];
        if (signature === "_") {
          this.tree._ = this.addFunction(func);
        } else if (regExp.number.test(signature)) {
          (this.tree[signature] || (this.tree[signature] = {}))._ = this.addFunction(func);
        } else if (regExp.letter.test(signature)) {
          var length = signature.length;
          var tree = this.tree[length] || (this.tree[length] = {});
          for (var i = 0; i < length; i++) {
            tree = tree[signature[i]] || (tree[signature[i]] = {});
          }
          tree._ = this.addFunction(func,parseArgs(signature));
        }
      }
    }
docs: .addSignature(function) .addSignature(signatures) .addSignature(signature, function)