private static int testDeepEquals() {
    int errors = 0;
    Object[] values = {
      null,
      null, // Change to values later
      new byte[] {(byte) 1},
      new short[] {(short) 1},
      new int[] {1},
      new long[] {1L},
      new char[] {(char) 1},
      new float[] {1.0f},
      new double[] {1.0d},
      new String[] {"one"}
    };
    values[1] = values;

    for (int i = 0; i < values.length; i++)
      for (int j = 0; j < values.length; j++) {
        boolean expected = (i == j);
        Object a = values[i];
        Object b = values[j];
        boolean result = Objects.deepEquals(a, b);
        if (result != expected) {
          errors++;
          System.err.printf(
              "When equating %s to %s, got %b instead of %b%n.", a, b, result, expected);
        }
      }

    return errors;
  }