code: public static void printDebug(final Collection pCollection, final String pMethodName, final PrintStream pPrintStream) {
  
      if (pPrintStream == null) {
        System.err.println(PRINTSTREAM_IS_NULL_ERROR_MESSAGE);
        return;
      }
      if (pCollection == null) {
        pPrintStream.println(COLLECTION_IS_NULL_ERROR_MESSAGE);
        return;
      } else if (pCollection.isEmpty()) {
        pPrintStream.println(COLLECTION_IS_EMPTY_ERROR_MESSAGE);
        return;
      }
      for (Iterator i = pCollection.iterator(); i.hasNext(); ) {
        printDebug(i.next(), pMethodName, pPrintStream);
      }
    }
docs: Invokes a given method of every element in a {@code java.util.Collection} and prints the results to a {@code java.io.PrintStream}.
  The method to be invoked must have no formal parameters.
  <p>
  If an exception is throwed during the method invocation, the element's {@code toString()} method is called.
  For bulk data types, recursive invocations and invocations of other methods in this class, are used.
  <p>
  Be aware that the {@code Collection} interface embraces a large portion of the bulk data types in the {@code java.util} package,
  e.g. {@code List}, {@code Set}, {@code Vector} and {@code HashSet}.
  <p>
  For debugging of arrays, use the method <a href="http://java.sun.com/products/jdk/1.3/docs/api/java/util/Arrays.html#asList(java.lang.Object[])">{@code java.util.Arrays.asList(Object[])}</a> method for converting the object array to a list before calling this method.
  <p>
  @param pCollection the {@code java.util.Collection} to be printed.
  @param pMethodName a {@code java.lang.String} holding the name of the method to be invoked on each collection element.
  @param pPrintStream the {@code java.io.PrintStream} for flushing the results.
  @see <a href="http://java.sun.com/products/jdk/1.3/docs/api/java/util/Collection.html">{@code java.util.Collection}</a>