code: 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;
      }
docs: Wrapper function for constructors or destructors on an object. It is used only when Aria.memCheckMode==true. When
  the constructor or destructor of an object is called, this function is called, and this function calls the
  corresponding constructor or destructor in the object definition and check that it calls its parent constructor
  or destructor.
  @private
  @param {Object} object
  @param {Object} definition object definition whose constructor should be called
  @param {Object} superclass superclass
  @param {String} fn May be "$constructor" or "$destructor".
  @param {Array} params Array of parameters to be given to the $constructor; should be empty when fn=="$destructor"
  return true if it was the first call