code: function (tplctxt, scopevars, ctlWrapper, ctlInitArgs, rootscope) {
          var vs = rootscope ? Object.create(rootscope) : {}, nm, argNames = []; // array of argument names
          if (scopevars) {
              for (var i = 0, sz = scopevars.length; sz > i; i += 2) {
                  nm = scopevars[i];
                  vs[nm] = scopevars[i + 1]; // feed the vscope
                  argNames.push(nm);
              }
          }
          vs["$scope"] = vs; // self reference (used for variables - cf. expression handler)
  
          var root = null;
          if (tplctxt.$constructor && tplctxt.$constructor === $CptNode) {
              // we use the component node as root node
              root = tplctxt;
              root.init(vs, this.nodedefs, argNames, ctlWrapper, ctlInitArgs);
          } else {
              root = new $RootNode(vs, this.nodedefs, argNames, ctlWrapper, ctlInitArgs);
          }
  
          return root;
      }
docs: Main method called to generate the document fragment associated to a template for a given set of arguments This
  creates a new set of node instances from the node definitions passed in the ng constructor
  @param {Array} scopevars the list of the scope variables (actually the template arguments) - e.g.
  ["person",person] odd indexes correspond to argument values / even indexes correspond to argument names
  @param {Object} ctlWrapper the controller observer - if any
  @param {Map} ctlInitAtts the init value of the controller attributes (optional) - e.g.
  {value:'123',mandatory:true}
  @param {Object} rootscope the parent root scope object containing the reference to
  the global objects accessible from the template file scope