New api: generate mappings from a descriptor object

Not ready to merge
var args = Array.prototype.slice.call(arguments);