addMessageComponents(container, cons, new JLabel(msg.toString()), maxll, true);
{ JLabel label = new JLabel(msg.toString()); configureLabel(label); addMessageComponents(container, cons, label, maxll, true); }
  protected void addMessageComponents(Container container,                                      GridBagConstraints cons, Object msg,                                      int maxll, boolean internallyCreated)  {    if (msg == null)      return;    hasCustomComponents = internallyCreated;    if (msg instanceof Object[])      {	Object[] arr = (Object[]) msg;	for (int i = 0; i < arr.length; i++)	  addMessageComponents(container, cons, arr[i], maxll,	                       internallyCreated);	return;      }    else if (msg instanceof Component)      {	container.add((Component) msg, cons);	cons.gridy++;      }    else if (msg instanceof Icon)      {	container.add(new JLabel((Icon) msg), cons);	cons.gridy++;      }    else      {	// Undocumented behaviour.	// if msg.toString().length greater than maxll	// it will create a box and burst the string.	// otherwise, it will just create a label and re-call 	// this method with the label o.O	if (msg.toString().length() > maxll || msg.toString().contains("\n"))	  {	    Box tmp = new Box(BoxLayout.Y_AXIS);	    burstStringInto(tmp, msg.toString(), maxll);	    addMessageComponents(container, cons, tmp, maxll, true);	  }	else	  addMessageComponents(container, cons, new JLabel(msg.toString()),	                       maxll, true);      }  }