protected boolean formatChannel(StringBuilder b, String channelStr, Object channel){
    if(this.channelColors == null && this.channelStyles == null){
      //(regular concat)
      b.append(channelStr);
    } else {
      String channelToString = channel.toString().toLowerCase();
      //(default: no style)
      Color color = Color.NONE;
      Style style = Style.NONE;
      //(get color)
      if(this.channelColors != null){
        Color candColor = this.channelColors.get(channelToString);
        if(candColor != null){
          //((case: found a color))
          color = candColor;
        } else if(addRandomColors){
          //((case: random colors))
          color = Color.values()[(Math.abs(channelToString.hashCode()) % (Color.values().length-3))+3];
          if(channelToString.equals(Redwood.ERR.toString().toLowerCase())){
            color = Color.RED;
          } else if(channelToString.equals(Redwood.WARN.toString().toLowerCase())){
            color = Color.YELLOW;
          }
          this.channelColors.put(channelToString, color);
        }
      }
      //(get style)
      if(this.channelStyles != null){
        Style candStyle = this.channelStyles.get(channelToString);
        if(candStyle != null){ style = candStyle; }
      }
      //(format)
      style(b,channelStr,color,style);
    }
    return true;  // Unless this method is overwritten, channel is always printed
  }