code: public static void createFieldDebugInfo(FacesContext facesContext,
              final String field, Object oldValue, 
              Object newValue, String clientId)
      {
          if ((oldValue == null && newValue == null)
                  || (oldValue != null && oldValue.equals(newValue)))
          {
              // nothing changed - NOTE that this is a difference to the method in 
              // UIInput, because in UIInput every call to this method comes from
              // setSubmittedValue or setLocalValue and here every call comes
              // from the VisitCallback of the PhaseListener.
              return;
          }
          
          // convert Array values into a more readable format
          if (oldValue != null && oldValue.getClass().isArray())
          {
              oldValue = Arrays.deepToString((Object[]) oldValue);
          }
          if (newValue != null && newValue.getClass().isArray())
          {
              newValue = Arrays.deepToString((Object[]) newValue);
          }
          
          // NOTE that the call stack does not make much sence here
          
          // create the debug-info array
          // structure:
          //     - 0: phase
          //     - 1: old value
          //     - 2: new value
          //     - 3: StackTraceElement List
          // NOTE that we cannot create a class here to encapsulate this data,
          // because this is not on the spec and the class would not be available in impl.
          Object[] debugInfo = new Object[4];
          debugInfo[0] = facesContext.getCurrentPhaseId();
          debugInfo[1] = oldValue;
          debugInfo[2] = newValue;
          debugInfo[3] = null; // here we have no call stack (only in UIInput)
          
          // add the debug info
          getFieldDebugInfos(field, clientId).add(debugInfo);
      }
docs: Creates the field debug-info for the given field, which changed
  from oldValue to newValue in the given component.
  ATTENTION: this method is duplicate in UIInput.
  @param facesContext
  @param field
  @param oldValue
  @param newValue
  @param clientId