code: function indexProperties(obj) {
  	if (!obj)
  		return;
  	if (obj.propertyMap)
  		return;
  	obj.propertyMap = new Map;
  	obj.properties.forEach(function(prty) {
  		obj.propertyMap.put(prty.name, prty);
  	})
  	if (!obj.prototype)
  		return;
  	var parent = lookupObject(obj.prototype.key);
  	indexProperties(parent)
  	parent.propertyMap.forEach(function(name,prty) {
  		if (!obj.propertyMap.has(name)) {
  			obj.propertyMap.put(name,prty);
  		}
  	})
  }
docs: ------------------------------------------------------------ Index Properties ------------------------------------------------------------