docs: function constructorTemplate(name) {
    // Creates a function like
    // function CLASS() {
    //   var firstArg = arguments[0];
    //   if (firstArg && firstArg[Symbol.for("lively-instance-restorer")]) {
    //     // for deserializing instances just do nothing
    //   } else {
    //     // automatically call the initialize method
    //     this[Symbol.for("lively-instance-initialize")].apply(this, arguments);
    //   }
    // }
  
    return funcExpr({id: name ? id(name) : null}, ["__first_arg__"],
      ifStmt(
        binaryExpr(
          id("__first_arg__"),
          "&&",
          member("__first_arg__", funcCall(member("Symbol", "for"), literal("lively-instance-restorer")), true)),
        block(),
        block(
          exprStmt(
            funcCall(
              member(
                member("this", funcCall(member("Symbol", "for"), literal("lively-instance-initialize")), true),
                "apply"), id("this"), id("arguments"))))));
  }