docs: function (out, statement) {
                      var parsename = /^@(\w+):(\w+)$/.exec(statement.name);
                      if (!parsename || parsename.length != 3) {
                          return out.logError(statement, statementsSingleton.INVALID_WIDGET_SYNTAX);
                      }
                      var libName = parsename[1];
                      var widgetName = parsename[2];
                      var libclasspath = out.templateParam.$wlibs[libName];
                      if (libclasspath === undefined) {
                          return out.logError(statement, statementsSingleton.UNDECLARED_WIDGET_LIBRARY, [libName]);
                      }
                      if (!out.dontLoadWidgetLibs) {
                          var wlib = out.wlibs[libName];
                          if (!wlib) {
                              wlib = Aria.getClassRef(libclasspath);
                              if (!ariaUtilsType.isInstanceOf(wlib, "aria.widgetLibs.WidgetLib")) {
                                  return out.logError(statement, statementsSingleton.INVALID_WIDGET_LIBRARY, [libName,
                                          libclasspath]);
                              }
                              out.wlibs[libName] = wlib;
                          }
                          var dep = wlib.getWidgetDependencies(widgetName, out.allDependencies);
                          if (!dep) {
                              return out.logError(statement, statementsSingleton.UNKNOWN_WIDGET, [statement.name]);
                          }
                          out.addDependencies(dep);
                      }
                      var param = statement.paramBlock;
                      if (param.length === 0) {
                          param = "undefined";
                      } else {
                          // Look for use of standard binding transforms
                          // and automatically add those to dependencies
                          var transformDependencies = [];
                          var regEx = /[\'\"](aria\.widgets\.transform\.(.+))[\'\"]/g;
                          var myMatch = regEx.exec(param);
                          while (myMatch) {
                              transformDependencies.push(myMatch[1]);
                              myMatch = regEx.exec(param);
                          }
                          out.addDependencies(transformDependencies);
                      }
  
                      if (out.debug && param != "undefined") {
                          param = out.wrapExpression(param, statement, "this.EXCEPTION_IN_CONTROL_PARAMETERS");
                      }
  
                      if (statement.content) {
                          // container widget
                          out.writeln("if (this.__$beginContainerWidget(", out.stringify(libclasspath), ",", out.stringify(widgetName), ",(", param, "),", statement.lineNumber, ")) {");
                          out.increaseIndent();
                          out.processContent(statement.content);
                          out.writeln("this.__$endContainerWidget();");
                          out.decreaseIndent();
                          out.writeln("}");
                      } else {
                          // simple widget
                          out.writeln("this.__$processWidgetMarkup(", out.stringify(libclasspath), ",", out.stringify(widgetName), ",(", param, "),", statement.lineNumber, ");");
                      }
                      statement.properties = {
                          libName: libName,
                          libClasspath: libclasspath,
                          widgetName: widgetName
                      };
                  }