code: public static byte[][] split(final byte[] a, final byte[] b,
        boolean inclusive, final int num) {
      byte[][] ret = new byte[num + 2][];
      int i = 0;
      Iterable<byte[]> iter = iterateOnSplits(a, b, inclusive, num);
      if (iter == null) {
        return null;
      }
      for (byte[] elem : iter) {
        ret[i++] = elem;
      }
      return ret;
    }
docs: Split passed range.  Expensive operation relatively.  Uses BigInteger math.
  Useful splitting ranges for MapReduce jobs.
  @param a Beginning of range
  @param b End of range
  @param inclusive Whether the end of range is prefix-inclusive or is
  considered an exclusive boundary.  Automatic splits are generally exclusive
  and manual splits with an explicit range utilize an inclusive end of range.
  @param num Number of times to split range.  Pass 1 if you want to split
  the range in two; i.e. one split.
  @return Array of dividing values