code: public static boolean deepEquals(Collection<?> first, Collection<?> second)
      {
          if (first != null)
          {
              if (second == null)
                  return false;
              if (first.size() != second.size())
                  return false;
              for (Iterator<?> itFirst = first.iterator(), itSecond = second.iterator(); itFirst.hasNext(); )
              {
                  Object elementFirst = itFirst.next();
                  Object elementSecond = itSecond.next();
                  if (!Objects.equals(elementFirst, elementSecond))
                      return false;
              }
          }
          else if (second != null)
          {
              return false;
          }
          return true;
      }
docs: ## CollectionUtils ##