// Path: src/main/java/org/fest/util/Lists.java
// public static @NotNull <T> List<T> emptyList() {
//   return Collections.emptyList();
// }
// 
// Path: src/main/java/org/fest/util/Sets.java
// public static @NotNull <T> HashSet<T> newHashSet() {
//   return new HashSet<T>();
// }
// 
// Path: src/main/java/org/fest/util/ToString.java
// public static @Nullable String toStringOf(@Nullable Object o) {
//   if (isArray(o)) {
//     return Arrays.format(o);
//   }
//   if (o instanceof Calendar) {
//     return toStringOf(o);
//   }
//   if (o instanceof Class<?>) {
//     return toStringOf((Class<?>) o);
//   }
//   if (o instanceof Collection<?>) {
//     return toStringOf((Collection<?>) o);
//   }
//   if (o instanceof Date) {
//     return toStringOf(o);
//   }
//   if (o instanceof Float) {
//     return toStringOf((Float) o);
//   }
//   if (o instanceof Long) {
//     return toStringOf((Long) o);
//   }
//   if (o instanceof File) {
//     return toStringOf((File) o);
//   }
//   if (o instanceof Map<?, ?>) {
//     return toStringOf((Map<?, ?>) o);
//   }
//   if (o instanceof String) {
//     return quote((String) o);
//   }
//   if (o instanceof Comparator) {
//     return toStringOf((Comparator<?>) o);
//   }
//   return o == null ? null : o.toString();
// }


import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import static org.fest.util.Lists.emptyList;
import static org.fest.util.Sets.newHashSet;
import static org.fest.util.ToString.toStringOf;

  /**
   * Indicates whether the given {@code Collection} is {@code null} or empty.
   *
   * @param c the given {@code Collection}.
   * @return {@code true} if the given {@code Collection} is {@code null} or empty, otherwise {@code false}.
   */
  public static boolean isNullOrEmpty(@Nullable Collection<?> c) {
    return c == null || c.isEmpty();
  }

  /**
   * Returns the {@code String} representation of the given {@code Collection}, or {@code null} if the given {@code
   * Collection} is {@code null}.
   *
   * @param c the {@code Collection} to format.
   * @return the {@code String} representation of the given {@code Collection}.
   */
  public static @Nullable String format(@Nullable Collection<?> c) {
    if (c == null) {
      return null;
    }
    Iterator<?> i = c.iterator();
    if (!i.hasNext()) {
      return "[]";
    }
    StringBuilder b = new StringBuilder();
    b.append('[');
    for (; ; ) {
      Object e = i.next();
// Path: src/main/java/org/fest/util/Lists.java
// public static @NotNull <T> List<T> emptyList() {
//   return Collections.emptyList();
// }
// 
// Path: src/main/java/org/fest/util/Sets.java
// public static @NotNull <T> HashSet<T> newHashSet() {
//   return new HashSet<T>();
// }
// 
// Path: src/main/java/org/fest/util/ToString.java
// public static @Nullable String toStringOf(@Nullable Object o) {
//   if (isArray(o)) {
//     return Arrays.format(o);
//   }
//   if (o instanceof Calendar) {
//     return toStringOf(o);
//   }
//   if (o instanceof Class<?>) {
//     return toStringOf((Class<?>) o);
//   }
//   if (o instanceof Collection<?>) {
//     return toStringOf((Collection<?>) o);
//   }
//   if (o instanceof Date) {
//     return toStringOf(o);
//   }
//   if (o instanceof Float) {
//     return toStringOf((Float) o);
//   }
//   if (o instanceof Long) {
//     return toStringOf((Long) o);
//   }
//   if (o instanceof File) {
//     return toStringOf((File) o);
//   }
//   if (o instanceof Map<?, ?>) {
//     return toStringOf((Map<?, ?>) o);
//   }
//   if (o instanceof String) {
//     return quote((String) o);
//   }
//   if (o instanceof Comparator) {
//     return toStringOf((Comparator<?>) o);
//   }
//   return o == null ? null : o.toString();
// }


// Path: src/main/java/org/fest/util/Collections.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import static org.fest.util.Lists.emptyList;
import static org.fest.util.Sets.newHashSet;
import static org.fest.util.ToString.toStringOf;


  /**
   * Indicates whether the given {@code Collection} is {@code null} or empty.
   *
   * @param c the given {@code Collection}.
   * @return {@code true} if the given {@code Collection} is {@code null} or empty, otherwise {@code false}.
   */
  public static boolean isNullOrEmpty(@Nullable Collection<?> c) {
    return c == null || c.isEmpty();
  }

  /**
   * Returns the {@code String} representation of the given {@code Collection}, or {@code null} if the given {@code
   * Collection} is {@code null}.
   *
   * @param c the {@code Collection} to format.
   * @return the {@code String} representation of the given {@code Collection}.
   */
  public static @Nullable String format(@Nullable Collection<?> c) {
    if (c == null) {
      return null;
    }
    Iterator<?> i = c.iterator();
    if (!i.hasNext()) {
      return "[]";
    }
    StringBuilder b = new StringBuilder();
    b.append('[');
    for (; ; ) {
      Object e = i.next();
      b.append(e == c ? "(this Collection)" : toStringOf(e));