public static void print(Object phase, Object source, Object component, String more) {
    DebugMessage message = new DebugMessage();
    message.event = phase.getClass().getSimpleName();
    message.source = getObjectString(source);
    message.component = getObjectString(component);
    message.details = more;
    message.type = TYPE_COMPONENT_EVENT;

    messages.add(message);
  }
  public static void print(String phase, Object component, String more) {
    DebugMessage message = new DebugMessage();
    message.event = phase;
    message.component = getObjectString(component);
    message.source = null;
    message.details = more;
    message.type = TYPE_APPLICATION;

    messages.add(message);
  }
  private static void onEvent(PhaseEvent event, String prefix) {
    PhaseId phase = event.getPhaseId();
    Object source = event.getSource();

    DebugMessage message = new DebugMessage();
    message.event = prefix + " " + phase;
    message.source = getObjectString(source);
    message.component = null;
    message.details = null;
    message.type = TYPE_LIFECYCLE;

    messages.add(message);
  }