code: public static int[] longToIntArray(final long src, final int srcPos, final int[] dst, final int dstPos,
              final int nInts) {
          if (0 == nInts) {
              return dst;
          }
          if ((nInts - 1) * 32 + srcPos >= 64) {
              throw new IllegalArgumentException("(nInts-1)*32+srcPos is greater or equal to than 64");
          }
          for (int i = 0; i < nInts; i++) {
              final int shift = i * 32 + srcPos;
              dst[dstPos + i] = (int) (0xffffffff & (src >> shift));
          }
          return dst;
      }
docs: <p>
  Converts a long into an array of int using the default (little endian, Lsb0) byte and bit
  ordering.
  </p>
  
  @param src the long to convert
  @param srcPos the position in {@code src}, in bits, from where to start the conversion
  @param dst the destination array
  @param dstPos the position in {@code dst} where to copy the result
  @param nInts the number of ints to copy to {@code dst}, must be smaller or equal to the
  width of the input (from srcPos to msb)
  @return {@code dst}
  @throws NullPointerException if {@code dst} is {@code null} and {@code nInts > 0}
  @throws IllegalArgumentException if {@code (nInts-1)*32+srcPos >= 64}
  @throws ArrayIndexOutOfBoundsException if {@code dstPos + nInts > dst.length}