code: function(object, resultFn) {
  				var keys = Object.keys(object);
  				if (keys.length === 0) {
  					resultFn(object);
  				} else {
  					var resultCount = 0;
  					keys.forEach(function(current) {
  						(function(key) {
  							(function(value, fn) {
  								if (value && value.getPluginRepresentation) {
  									value.getPluginRepresentation().then(function(newValue) {
  										fn(newValue);
  									});
  								} else {
  									fn(value);
  								}
  							}(object[key], function(newValue) {
  								object[key] = newValue;
  								if (++resultCount === keys.length) {
  									resultFn(object);
  								}
  							}));
  						}(current));
  					});
  				}
  			}
docs: /*
  The following function calls getPluginRepresentation(), if present, on all
  properties in object, in order to give custom types an opportunity to provide
  plugins with different representations of their instances than are used
  internally.