whole_func_string: function(marker, showPosition) {
        var msg = qx.tool.compiler.Console.MESSAGE_IDS[marker.msgId]||marker.msgId;
        var str = "";
        var pos = marker.pos;
        if (showPosition !== false && pos && pos.start && pos.start.line) {
          str += "[" + pos.start.line;
          if (pos.start.column) {
            str += "," + pos.start.column;
          }
          if (pos.end && pos.end.line && 
              pos.end.line !== pos.start.line && 
              pos.end.column !== pos.start.column) {
            str += " to " + pos.end.line;
            if (pos.end.column) {
              str += "," + pos.end.column;
            }
          }
          str += "] ";
        }
        str += qx.lang.String.format(msg.message, marker.args||[]);
        return str;
      }
func_code_string: function(marker, showPosition) {
        var msg = qx.tool.compiler.Console.MESSAGE_IDS[marker.msgId]||marker.msgId;
        var str = "";
        var pos = marker.pos;
        if (showPosition !== false && pos && pos.start && pos.start.line) {
          str += "[" + pos.start.line;
          if (pos.start.column) {
            str += "," + pos.start.column;
          }
          if (pos.end && pos.end.line && 
              pos.end.line !== pos.start.line && 
              pos.end.column !== pos.start.column) {
            str += " to " + pos.end.line;
            if (pos.end.column) {
              str += "," + pos.end.column;
            }
          }
          str += "] ";
        }
        str += qx.lang.String.format(msg.message, marker.args||[]);
        return str;
      }
func_documentation_string: Decodes a marker into a String description
  @param marker {Map} containing:
  msgId {String}
  start {Map} containing:
  line {Integer}
  column? {Integer}
  end? {Map} containing:
  line {Integer}
  column? {Integer}
  args? {Object[]}
  @param showPosition {Boolean?} whether to include line/column info (default is true)
  @return {String}