docs: function (obj, def, superclass, fn, params) {
          var newcall = (!obj["aria:nextCall"]);
          if (!newcall && obj["aria:nextCall"] != def.$classpath) {
              Aria.$logError(Aria.WRONGPARENT_CALLED, [fn, def.$classpath, obj["aria:nextCall"], obj.$classpath]);
          }
          obj["aria:nextCall"] = (superclass ? superclass.classDefinition.$classpath : null);
          if (def[fn]) {
              def[fn].apply(obj, params);
          } else if (superclass && fn == "$destructor") {
              // no destructor: must call the parent destructor, by default
              superclass.prototype.$destructor.apply(obj, params);
          }
          if (obj["aria:nextCall"] && obj["aria:nextCall"] != "aria.core.JsObject") {
              Aria.$logError(Aria.PARENT_NOTCALLED, [fn, obj["aria:nextCall"], def.$classpath]);
          }
          if (newcall) {
              obj["aria:nextCall"] = undefined;
          }
          return newcall;
      }