code: public static boolean deepEquals(final Object a, final Object b) {
          if ((a == null) ? b == null : (b == null ? false : a.equals(b))) {
              return true;
          }
  
          if ((a != null) && (b != null) && a.getClass().isArray() && a.getClass().equals(b.getClass())) {
              return typeOf(a.getClass()).deepEquals(a, b);
          }
  
          return false;
      }
docs: compare {@code a} and {@code b} by
  {@link Arrays#equals(Object[], Object[])} if both of them are array.
  
  @param a
  @param b
  @return boolean