whole_func_string: function(msgId, ...args) {
        for (var i = 0; i < args.length; i++) {
          var arg = args[i];
          if (typeof arg !== "string" && typeof arg !== "number" && arg !== null) {
            args[i] = String(arg); 
          }
        }
        if (this.isMachineReadable()) {
          let str = "##" + msgId + ":" + JSON.stringify(args);
          console.log(str);
        } else {
          var writer = this.getWriter();
          let str = this.decode(msgId, ...args);
          if (writer) {
            writer(str, msgId, ...args); 
          } else {
            console.log(str); 
          }
        }
      }
func_code_string: function(msgId, ...args) {
        for (var i = 0; i < args.length; i++) {
          var arg = args[i];
          if (typeof arg !== "string" && typeof arg !== "number" && arg !== null) {
            args[i] = String(arg); 
          }
        }
        if (this.isMachineReadable()) {
          let str = "##" + msgId + ":" + JSON.stringify(args);
          console.log(str);
        } else {
          var writer = this.getWriter();
          let str = this.decode(msgId, ...args);
          if (writer) {
            writer(str, msgId, ...args); 
          } else {
            console.log(str); 
          }
        }
      }
func_documentation_string: Prints the message
  
  @param msgId {String} translatable message ID
  @param args {Object...} arguments