rem: for(var m in impl) { var getter = impl.__lookupGetter__(m); if(getter) p.__defineGetter__(m, getter); else p[m] = impl[m]; }  for(m in layout) { if(m in impl) throw "createPile: layout has property '" + m + "' which was already provided by impl"; getter = layout.__lookupGetter__(m); if(getter) p.__defineGetter__(m, getter); else p[m] = layout[m]; } 
add: extendObj(p, impl, true); extendObj(p, layout, false); 
context: function createPile(type, impl, layout) {  if(!impl) throw "createPile called with impl=" + impl;  if(!layout) throw "createPile called with layout=" + layout;  const p = document.createElement(type);  p.offset = 0; // why?  for(var m in impl) {    var getter = impl.__lookupGetter__(m);    if(getter) p.__defineGetter__(m, getter);    else p[m] = impl[m];  }  // add any methods+getters not provided by |impl|  for(m in layout) {    if(m in impl) throw "createPile: layout has property '" + m + "' which was already provided by impl";    getter = layout.__lookupGetter__(m);    if(getter) p.__defineGetter__(m, getter);    else p[m] = layout[m];  }  p.source = p;  return p;}
meta: 3385	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/3385/76838ffa1935fcad7cf2820100d0854425857cb8/libpiles.js/buggy/libpiles.js