Arrays.java Source code

Java tutorial

Introduction

Here is the source code for Arrays.java

Source

// Revised from marf

import java.util.Comparator;
import java.util.Vector;

/**
 * <p><code>marf.util.Arrays</code> is an extension of <code>java.util.Arrays</code>
 * to group a lot of commonly used arrays-related functionality in one place. This class
 * can do whatever <code>java.util.Arrays</code> can, plus allows copying array portions,
 * including cases when the source and destination arrays are of different types, and providing
 * array-to-Vector and array-to-delimited-String conversions. For the type-conversion
 * routines a proper casting to the destination type is performed when needed. It also
 * allows inheritance from the class, so that anyone wishing to extend it is welcome to
 * do so without the pain of re-wrapping the methods.</p>
 *
 * TODO: optimize.
 *
 * <p>NOTE: the <code>java.util.Arrays</code> compliance is true as of JDK 1.4.</p>
 *
 * <p>NOTE: it does not actually inherit (extend) from <code>java.util.Arrays</code>, but rather wraps
 * existing methods, plus adds the <code>copy()</code> wrappers of <code>System.arraycopy()</code>,
 * and <code>arrayToVector()</code> methods.</p>
 *
 * <p>$Id: Arrays.java,v 1.38 2006/09/09 17:26:58 mokhov Exp $</p>
 *
 * @author Serguei Mokhov
 * @author Shuxin Fan
 *
 * @version $Revision: 1.38 $
 * @since 0.3.0.1
 *
 * @see java.util.Arrays
 * @see System#arraycopy(Object, int, Object, int, int)
 */
public class Arrays {
    /**
     * The protected default constructor is provided
     * to allow making extension of this class if
     * developers desire to do so. Normally, you would
     * not need to instantiate this class, but in order
     * not to re-wrap our calls in possible extensions
     * this constructor is available.
     */
    protected Arrays() {
    }

    /*
     * -------
     * Copying
     * -------
     */

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>.
     *
     * @param poDestination destination array of copy
     * @param piDestinationStartIndex where in the destination array start placing the values
     * @param poSource source of elements
     * @param piSourceStartIndex where in the source array start copying the values from
     * @param piHowMany how many elements should be copied from the source to destination
     */
    public static void copy(Object poDestination, final int piDestinationStartIndex, Object poSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(poSource, piSourceStartIndex, poDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>
     * for Object arrays.
     *
     * @param paoDestination destination array of objects to copy to
     * @param piDestinationStartIndex where in the destination array start placing the values
     * @param paoSource source of Object elements
     * @param piSourceStartIndex where in the source array start copying the values from
     * @param piHowMany how many elements should be copied from the source to destination
     */
    public static void copy(Object[] paoDestination, final int piDestinationStartIndex, Object[] paoSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(paoSource, piSourceStartIndex, paoDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N boolean elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param pabDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param pabSource array of booleans to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(boolean[] pabDestination, final int piDestinationStartIndex, boolean[] pabSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(pabSource, piSourceStartIndex, pabDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N byte elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param patDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param patSource array of bytes to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(byte[] patDestination, final int piDestinationStartIndex, byte[] patSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(patSource, piSourceStartIndex, patDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N character elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param pacDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param pacSource array of characters to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(char[] pacDestination, final int piDestinationStartIndex, char[] pacSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(pacSource, piSourceStartIndex, pacDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N integer elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param paiDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param paiSource array of integers to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(int[] paiDestination, final int piDestinationStartIndex, int[] paiSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(paiSource, piSourceStartIndex, paiDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N short elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param pasDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param pasSource array of shorts to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(short[] pasDestination, final int piDestinationStartIndex, short[] pasSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(pasSource, piSourceStartIndex, pasDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N long elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param palDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param palSource array of longs to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(long[] palDestination, final int piDestinationStartIndex, long[] palSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(palSource, piSourceStartIndex, palDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N float elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param pafDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param pafSource array of float to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(float[] pafDestination, final int piDestinationStartIndex, float[] pafSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(pafSource, piSourceStartIndex, pafDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Copies N double elements from source to destination starting at certain index in the <b>destination</b>.
     * A wrapper call to <code>System.arraycopy()</code>.
     *
     * @param padDestination array to copy to
     * @param piDestinationStartIndex starting index in the destination to start copying to
     * @param padSource array of doubles to copy from
     * @param piSourceStartIndex starting index in the source to start copying from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     *
     * @throws ArrayIndexOutOfBoundsException if one of the indices is out of range
     */
    public static void copy(double[] padDestination, final int piDestinationStartIndex, double[] padSource,
            final int piSourceStartIndex, final int piHowMany) {
        System.arraycopy(padSource, piSourceStartIndex, padDestination, piDestinationStartIndex, piHowMany);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>.
     *
     * @param poDestination destination array of copy
     * @param piStartIndex where in the destination array start placing the values
     * @param poSource source of elements
     * @param piHowMany how many elements should be copied from the source to destination
     */
    public static void copy(Object poDestination, final int piStartIndex, Object poSource, final int piHowMany) {
        copy(poDestination, piStartIndex, poSource, 0, piHowMany);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>
     * for Object arrays.
     *
     * @param paoDestination destination array of objects to copy to
     * @param piStartIndex where in the destination array start placing the values
     * @param paoSource source of Object elements
     * @param piHowMany how many elements should be copied from the source to destination
     */
    public static void copy(Object[] paoDestination, final int piStartIndex, Object[] paoSource,
            final int piHowMany) {
        copy(paoDestination, piStartIndex, paoSource, 0, piHowMany);
    }

    /**
     * Copies N character elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pacDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pacSource array of characters to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(char[] pacDestination, final int piStartIndex, char[] pacSource, final int piHowMany) {
        copy(pacDestination, piStartIndex, pacSource, 0, piHowMany);
    }

    /**
     * Copies N boolean elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pabDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pabSource array of booleans to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(boolean[] pabDestination, final int piStartIndex, boolean[] pabSource,
            final int piHowMany) {
        copy(pabDestination, piStartIndex, pabSource, 0, piHowMany);
    }

    /**
     * Copies N byte elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param patDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param patSource array of bytes to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(byte[] patDestination, final int piStartIndex, byte[] patSource, final int piHowMany) {
        copy(patDestination, piStartIndex, patSource, 0, piHowMany);
    }

    /**
     * Copies N integer elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param paiDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param paiSource array of integers to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(int[] paiDestination, final int piStartIndex, int[] paiSource, final int piHowMany) {
        copy(paiDestination, piStartIndex, paiSource, 0, piHowMany);
    }

    /**
     * Copies N short elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pasDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pasSource array of shorts to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(short[] pasDestination, final int piStartIndex, short[] pasSource,
            final int piHowMany) {
        copy(pasDestination, piStartIndex, pasSource, 0, piHowMany);
    }

    /**
     * Copies N long elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param palDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param palSource array of longs to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(long[] palDestination, final int piStartIndex, long[] palSource, final int piHowMany) {
        copy(palDestination, piStartIndex, palSource, 0, piHowMany);
    }

    /**
     * Copies N float elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pafDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pafSource array of floats to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(float[] pafDestination, final int piStartIndex, float[] pafSource,
            final int piHowMany) {
        copy(pafDestination, piStartIndex, pafSource, 0, piHowMany);
    }

    /**
     * Copies N double elements from source to destination starting at certain index in the <b>destination</b>.
     *
     * @param padDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param padSource array of doubles to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(double[] padDestination, final int piStartIndex, double[] padSource,
            final int piHowMany) {
        copy(padDestination, piStartIndex, padSource, 0, piHowMany);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>
     * for Object arrays.
     *
     * @param paoDestination destination array of objects to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param paoSource source of object elements
     */
    public static void copy(Object[] paoDestination, final int piStartIndex, Object[] paoSource) {
        copy(paoDestination, piStartIndex, paoSource, paoSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pabDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pabSource array of booleans to copy from
     */
    public static void copy(boolean[] pabDestination, final int piStartIndex, boolean[] pabSource) {
        copy(pabDestination, piStartIndex, pabSource, pabSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param patDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param patSource array of bytes to copy from
     */
    public static void copy(byte[] patDestination, final int piStartIndex, byte[] patSource) {
        copy(patDestination, piStartIndex, patSource, patSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pacDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pacSource array of characters to copy from
     */
    public static void copy(char[] pacDestination, final int piStartIndex, char[] pacSource) {
        copy(pacDestination, piStartIndex, pacSource, pacSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param paiDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param paiSource array of integers to copy from
     */
    public static void copy(int[] paiDestination, final int piStartIndex, int[] paiSource) {
        copy(paiDestination, piStartIndex, paiSource, paiSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pasDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pasSource array of shorts to copy from
     */
    public static void copy(short[] pasDestination, final int piStartIndex, short[] pasSource) {
        copy(pasDestination, piStartIndex, pasSource, pasSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param palDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param palSource array of longs to copy from
     */
    public static void copy(long[] palDestination, final int piStartIndex, long[] palSource) {
        copy(palDestination, piStartIndex, palSource, palSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param pafDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param pafSource array of floats to copy from
     */
    public static void copy(float[] pafDestination, final int piStartIndex, float[] pafSource) {
        copy(pafDestination, piStartIndex, pafSource, pafSource.length);
    }

    /**
     * Copies source to destination starting at certain index in the <b>destination</b>.
     *
     * @param padDestination array to copy to
     * @param piStartIndex starting index in the destination to start copying to
     * @param padSource array of doubles to copy from
     */
    public static void copy(double[] padDestination, final int piStartIndex, double[] padSource) {
        copy(padDestination, piStartIndex, padSource, padSource.length);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>.
     *
     * @param poDestination destination array of copy
     * @param poSource source of elements
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(Object poDestination, Object poSource, final int piHowMany) {
        copy(poDestination, 0, poSource, piHowMany);
    }

    /**
     * Generic <code>copy()</code> routine is based on <code>System.arraycopy()</code>
     * for Object arrays.
     *
     * @param paoDestination array to copy to
     * @param paoSource source of object elements
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(Object[] paoDestination, Object[] paoSource, final int piHowMany) {
        copy(paoDestination, 0, paoSource, piHowMany);
    }

    /**
     * Copies N character elements from source to destination.
     *
     * @param pacDestination array to copy to
     * @param pacSource array of characters to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(char[] pacDestination, char[] pacSource, final int piHowMany) {
        copy(pacDestination, 0, pacSource, piHowMany);
    }

    /**
     * Copies N boolean elements from source to destination.
     *
     * @param pabDestination array to copy to
     * @param pabSource array of boolean to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(boolean[] pabDestination, boolean[] pabSource, final int piHowMany) {
        copy(pabDestination, 0, pabSource, piHowMany);
    }

    /**
     * Copies N byte elements from source to destination.
     *
     * @param patDestination array to copy to
     * @param patSource array of bytes to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(byte[] patDestination, byte[] patSource, final int piHowMany) {
        copy(patDestination, 0, patSource, piHowMany);
    }

    /**
     * Copies N short elements from source to destination.
     *
     * @param pasDestination array to copy to
     * @param pasSource array of shorts to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(short[] pasDestination, short[] pasSource, final int piHowMany) {
        copy(pasDestination, 0, pasSource, piHowMany);
    }

    /**
     * Copies N long elements from source to destination.
     *
     * @param palDestination array to copy to
     * @param palSource array of longs to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(long[] palDestination, long[] palSource, final int piHowMany) {
        copy(palDestination, 0, palSource, piHowMany);
    }

    /**
     * Copies N float elements from source to destination.
     *
     * @param pafDestination array to copy to
     * @param pafSource array of floats to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(float[] pafDestination, float[] pafSource, final int piHowMany) {
        copy(pafDestination, 0, pafSource, piHowMany);
    }

    /**
     * Copies N double elements from source to destination.
     *
     * @param padDestination array to copy to
     * @param padSource array of doubles to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(double[] padDestination, double[] padSource, final int piHowMany) {
        copy(padDestination, 0, padSource, piHowMany);
    }

    /**
     * Copies N int elements from source to destination.
     *
     * @param paiDestination array to copy to
     * @param paiSource array of ints to copy from
     * @param piHowMany N; the number of elements to copy from the source to the destination
     */
    public static void copy(int[] paiDestination, int[] paiSource, final int piHowMany) {
        copy(paiDestination, 0, paiSource, 0, piHowMany);
    }

    /*
     * -------------
     * Concatenation
     * -------------
     */

    /**
     * Concatenates two arrays of objects and returns a newly
     * allocated array of the concatenated pieces.
     * @param paoLHS first array piece
     * @param paoRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static Object[] concatenate(final Object[] paoLHS, final Object[] paoRHS) {
        Object[] aoConcatenated = new Object[paoLHS.length + paoRHS.length];
        System.arraycopy(paoLHS, 0, aoConcatenated, 0, paoLHS.length);
        System.arraycopy(paoRHS, 0, aoConcatenated, paoLHS.length, paoRHS.length);
        return aoConcatenated;
    }

    /**
     * Concatenates two arrays of Strings and returns a newly
     * allocated array of the concatenated pieces.
     * @param pastrLHS first array piece
     * @param pastrRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static String[] concatenate(final String[] pastrLHS, final String[] pastrRHS) {
        String[] astrConcatenated = new String[pastrLHS.length + pastrRHS.length];
        System.arraycopy(pastrLHS, 0, astrConcatenated, 0, pastrLHS.length);
        System.arraycopy(pastrRHS, 0, astrConcatenated, pastrLHS.length, pastrRHS.length);
        return astrConcatenated;
    }

    /**
     * Concatenates two arrays of doubles and returns a newly
     * allocated array of the concatenated pieces.
     * @param padLHS first array piece
     * @param padRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static double[] concatenate(final double[] padLHS, final double[] padRHS) {
        double[] adConcatenated = new double[padLHS.length + padRHS.length];
        System.arraycopy(padLHS, 0, adConcatenated, 0, padLHS.length);
        System.arraycopy(padRHS, 0, adConcatenated, padLHS.length, padRHS.length);
        return adConcatenated;
    }

    /**
     * Concatenates two arrays of booleans and returns a newly
     * allocated array of the concatenated pieces.
     * @param pabLHS first array piece
     * @param pabRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static boolean[] concatenate(final boolean[] pabLHS, final boolean[] pabRHS) {
        boolean[] abConcatenated = new boolean[pabLHS.length + pabRHS.length];
        System.arraycopy(pabLHS, 0, abConcatenated, 0, pabLHS.length);
        System.arraycopy(pabRHS, 0, abConcatenated, pabLHS.length, pabRHS.length);
        return abConcatenated;
    }

    /**
     * Concatenates two arrays of bytes and returns a newly
     * allocated array of the concatenated pieces.
     * @param patLHS first array piece
     * @param patRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static byte[] concatenate(final byte[] patLHS, final byte[] patRHS) {
        byte[] atConcatenated = new byte[patLHS.length + patRHS.length];
        System.arraycopy(patLHS, 0, atConcatenated, 0, patLHS.length);
        System.arraycopy(patRHS, 0, atConcatenated, patLHS.length, patRHS.length);
        return atConcatenated;
    }

    /**
     * Concatenates two arrays of characters and returns a newly
     * allocated array of the concatenated pieces.
     * @param pacLHS first array piece
     * @param pacRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static char[] concatenate(final char[] pacLHS, final char[] pacRHS) {
        char[] acConcatenated = new char[pacLHS.length + pacRHS.length];
        System.arraycopy(pacLHS, 0, acConcatenated, 0, pacLHS.length);
        System.arraycopy(pacRHS, 0, acConcatenated, pacLHS.length, pacRHS.length);
        return acConcatenated;
    }

    /**
     * Concatenates two arrays of integers and returns a newly
     * allocated array of the concatenated pieces.
     * @param paiLHS first array piece
     * @param paiRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static int[] concatenate(final int[] paiLHS, final int[] paiRHS) {
        int[] aiConcatenated = new int[paiLHS.length + paiRHS.length];
        System.arraycopy(paiLHS, 0, aiConcatenated, 0, paiLHS.length);
        System.arraycopy(paiRHS, 0, aiConcatenated, paiLHS.length, paiRHS.length);
        return aiConcatenated;
    }

    /**
     * Concatenates two arrays of shorts and returns a newly
     * allocated array of the concatenated pieces.
     * @param pasLHS first array piece
     * @param pasRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static short[] concatenate(final short[] pasLHS, final short[] pasRHS) {
        short[] asConcatenated = new short[pasLHS.length + pasRHS.length];
        System.arraycopy(pasLHS, 0, asConcatenated, 0, pasLHS.length);
        System.arraycopy(pasRHS, 0, asConcatenated, pasLHS.length, pasRHS.length);
        return asConcatenated;
    }

    /**
     * Concatenates two arrays of floats and returns a newly
     * allocated array of the concatenated pieces.
     * @param pafLHS first array piece
     * @param pafRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static float[] concatenate(final float[] pafLHS, final float[] pafRHS) {
        float[] afConcatenated = new float[pafLHS.length + pafRHS.length];
        System.arraycopy(pafLHS, 0, afConcatenated, 0, pafLHS.length);
        System.arraycopy(pafRHS, 0, afConcatenated, pafLHS.length, pafRHS.length);
        return afConcatenated;
    }

    /**
     * Concatenates two arrays of longs and returns a newly
     * allocated array of the concatenated pieces.
     * @param palLHS first array piece
     * @param palRHS second array piece
     * @return new combined array
     * @since 0.3.0.4
     */
    public static long[] concatenate(final long[] palLHS, final long[] palRHS) {
        long[] alConcatenated = new long[palLHS.length + palRHS.length];
        System.arraycopy(palLHS, 0, alConcatenated, 0, palLHS.length);
        System.arraycopy(palRHS, 0, alConcatenated, palLHS.length, palRHS.length);
        return alConcatenated;
    }

    /*
     * --------
     * Equality
     * --------
     */

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param pabArray1 the first array of booleans to be compared for equality
     * @param pabArray2 the second array of booleans to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(boolean[] pabArray1, boolean[] pabArray2) {
        return java.util.Arrays.equals(pabArray1, pabArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param patArray1 the first array of bytes to be compared for equality
     * @param patArray2 the second array of bytes to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(byte[] patArray1, byte[] patArray2) {
        return java.util.Arrays.equals(patArray1, patArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param pacArray1 the first array of characters to be compared for equality
     * @param pacArray2 the second array of characters to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(char[] pacArray1, char[] pacArray2) {
        return java.util.Arrays.equals(pacArray1, pacArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param padArray1 the first array of doubles to be compared for equality
     * @param padArray2 the second array of doubles to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(double[] padArray1, double[] padArray2) {
        return java.util.Arrays.equals(padArray1, padArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param pafArray1 the first array of floats to be compared for equality
     * @param pafArray2 the second array of floats to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(float[] pafArray1, float[] pafArray2) {
        return java.util.Arrays.equals(pafArray1, pafArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param paiArray1 the first array of integers to be compared for equality
     * @param paiArray2 the second array of integers to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(int[] paiArray1, int[] paiArray2) {
        return java.util.Arrays.equals(paiArray1, paiArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param palArray1 the first array of longs to be compared for equality
     * @param palArray2 the second array of longs to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(long[] palArray1, long[] palArray2) {
        return java.util.Arrays.equals(palArray1, palArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param paoArray1 the first array of Objects to be compared for equality
     * @param paoArray2 the second array of Objects to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(Object[] paoArray1, Object[] paoArray2) {
        return java.util.Arrays.equals(paoArray1, paoArray2);
    }

    /**
     * The <code>equals()</code> routine is based on <code>java.util.Arrays.equals()</code>.
     *
     * @param pasArray1 the first array of shorts to be compared for equality
     * @param pasArray2 the second array of shorts to be compared for equality
     * @return a boolean value <code> true </code> if the two arrays are equal
     */
    public static boolean equals(short[] pasArray1, short[] pasArray2) {
        return java.util.Arrays.equals(pasArray1, pasArray2);
    }

    /*
     * -------------
     * Array filling
     * -------------
     */

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pabArray the array of booleans to be filled
     * @param pbValue the value of boolean  to fill into the array of booleans
     */
    public static void fill(boolean[] pabArray, boolean pbValue) {
        java.util.Arrays.fill(pabArray, pbValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pabArray the array of booleans to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param pbValue the value of boolean  to fill into the array of booleans
     */
    public static void fill(boolean[] pabArray, int piFromIndex, int piToIndex, boolean pbValue) {
        java.util.Arrays.fill(pabArray, piFromIndex, piToIndex, pbValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param patArray the array of bytes to be filled
     * @param ptValue the value of byte to fill into the array of bytes
     */
    public static void fill(byte[] patArray, byte ptValue) {
        java.util.Arrays.fill(patArray, ptValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param patArray the array of bytes to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param ptValue the value of byte to fill into the array of bytes
     */
    public static void fill(byte[] patArray, int piFromIndex, int piToIndex, byte ptValue) {
        java.util.Arrays.fill(patArray, piFromIndex, piToIndex, ptValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pacArray the array of characters to be filled
     * @param pcValue the value of character to fill into the array of characters
     */
    public static void fill(char[] pacArray, char pcValue) {
        java.util.Arrays.fill(pacArray, pcValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pacArray the array of characters to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param pcValue the value of character to fill into the array of characters
     */
    public static void fill(char[] pacArray, int piFromIndex, int piToIndex, char pcValue) {
        java.util.Arrays.fill(pacArray, piFromIndex, piToIndex, pcValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param padArray the array of doubles to be filled
     * @param pdValue the value of double to fill into the array of doubles
     */
    public static void fill(double[] padArray, double pdValue) {
        java.util.Arrays.fill(padArray, pdValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param padArray the array of doubles to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param pdValue the value of double to fill into the array of doubles
     */
    public static void fill(double[] padArray, int piFromIndex, int piToIndex, double pdValue) {
        java.util.Arrays.fill(padArray, piFromIndex, piToIndex, pdValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pafArray the array of floats to be filled
     * @param pfValue the value of float to fill into the array of floats
     */
    public static void fill(float[] pafArray, float pfValue) {
        java.util.Arrays.fill(pafArray, pfValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pafArray the array of floats to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param pfValue the value of float to fill into the array of floats
     */
    public static void fill(float[] pafArray, int piFromIndex, int piToIndex, float pfValue) {
        java.util.Arrays.fill(pafArray, piFromIndex, piToIndex, pfValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param paiArray the array of integers to be filled
     * @param piValue the value of integer to fill into the array of integers
     */
    public static void fill(int[] paiArray, int piValue) {
        java.util.Arrays.fill(paiArray, piValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param paiArray the array of integers to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param piValue the value of integer to fill into the array of integers
     */
    public static void fill(int[] paiArray, int piFromIndex, int piToIndex, int piValue) {
        java.util.Arrays.fill(paiArray, piFromIndex, piToIndex, piValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param palArray the array of longs to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param plValue the value of long to fill into the array of longs
     */
    public static void fill(long[] palArray, int piFromIndex, int piToIndex, long plValue) {
        java.util.Arrays.fill(palArray, piFromIndex, piToIndex, plValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param palArray the array of longs to be filled
     * @param plValue the value of long to fill into the array of longs
     */
    public static void fill(long[] palArray, long plValue) {
        java.util.Arrays.fill(palArray, plValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param paoArray the array to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param paValue the value to fill into the array
     */
    public static void fill(Object[] paoArray, int piFromIndex, int piToIndex, Object paValue) {
        java.util.Arrays.fill(paoArray, piFromIndex, piToIndex, paValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param paoArray the array to be filled
     * @param poValue the value to fill into the array
     */
    public static void fill(Object[] paoArray, Object poValue) {
        java.util.Arrays.fill(paoArray, poValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pasArray the array of shorts to be filled
     * @param piFromIndex the index of the array from here the value to be filled
     * @param piToIndex the index one after the last element of the array to be filled
     * @param psValue the value of short  to fill into the array of shorts
     */
    public static void fill(short[] pasArray, int piFromIndex, int piToIndex, short psValue) {
        java.util.Arrays.fill(pasArray, piFromIndex, piToIndex, psValue);
    }

    /**
     * The <code>fill()</code> is based on <code>java.util.Arrays.fill()</code>.
     *
     * @param pasArray the array of shorts to be filled
     * @param psValue the value of short  to fill into the array of shorts
     */
    public static void fill(short[] pasArray, short psValue) {
        java.util.Arrays.fill(pasArray, psValue);
    }

    /**
     * Sets all elements of the parameter at pseudo-random order.
     * The range of the values is [- Double.MAX_VALUE / 2, Double.MAX_VALUE / 2].
     * @param padArray the array to fill
     * @since 0.3.0.6
     */
    public static void fillRandom(double[] padArray) {
        for (int i = 0; i < padArray.length; i++) {
            padArray[i] = (Math.random() - 0.5) * Double.MAX_VALUE;
        }
    }

    /*
     * -------
     * Sorting
     * -------
     */

    /**
     * A wrapper of java.util.Arrays.sort(Object[], Comparator).
     *
     * @param paoArrayToSort array of objects to sort
     * @param poComparator comparator object to use while sorting
     */
    public static void sort(Object[] paoArrayToSort, Comparator poComparator) {
        java.util.Arrays.sort(paoArrayToSort, poComparator);
    }

    /**
     * A wrapper of java.util.Arrays.sort(double[]).
     *
     * @param padArrayToSort array of doubles to sort
     */
    public static void sort(double[] padArrayToSort) {
        java.util.Arrays.sort(padArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(float[]).
     *
     * @param pafArrayToSort array of float to sort
     */
    public static void sort(float[] pafArrayToSort) {
        java.util.Arrays.sort(pafArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(int[]).
     *
     * @param paiArrayToSort array of integers to sort
     */
    public static void sort(int[] paiArrayToSort) {
        java.util.Arrays.sort(paiArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(byte[]).
     *
     * @param patArrayToSort array of bytes to sort
     */
    public static void sort(byte[] patArrayToSort) {
        java.util.Arrays.sort(patArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(char[]).
     *
     * @param pacArrayToSort array of characters to sort
     */
    public static void sort(char[] pacArrayToSort) {
        java.util.Arrays.sort(pacArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(double[]).
     *
     * @param palArrayToSort array of longs to sort
     */
    public static void sort(long[] palArrayToSort) {
        java.util.Arrays.sort(palArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(short[]).
     *
     * @param pasArrayToSort array of shorts to sort
     */
    public static void sort(short[] pasArrayToSort) {
        java.util.Arrays.sort(pasArrayToSort);
    }

    /**
     * A wrapper of java.util.Arrays.sort(object []).
     *
     * @param paoArrayToSort array of objects to sort
     */
    public static void sort(Object[] paoArrayToSort) {
        java.util.Arrays.sort(paoArrayToSort);
    }

    /*
     * ----------
     * Conversion
     * ----------
     */

    /**
     * Converts array of doubles to Vector.
     *
     * @param padData array of double data
     * @return equivalent collection of Double objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final double[] padData) {
        Vector oVector = new Vector(padData.length);

        for (int i = 0; i < padData.length; i++) {
            oVector.add(new Double(padData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of ints to Vector.
     *
     * @param paiData array of int data
     * @return equivalent collection of Integer objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final int[] paiData) {
        Vector oVector = new Vector(paiData.length);

        for (int i = 0; i < paiData.length; i++) {
            oVector.add(new Integer(paiData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of floats to Vector.
     *
     * @param pafData array of float data
     * @return equivalent collection of Float objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final float[] pafData) {
        Vector oVector = new Vector(pafData.length);

        for (int i = 0; i < pafData.length; i++) {
            oVector.add(new Float(pafData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of shorts to Vector.
     *
     * @param pasData array of short data
     * @return equivalent collection of Short objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final short[] pasData) {
        Vector oVector = new Vector(pasData.length);

        for (int i = 0; i < pasData.length; i++) {
            oVector.add(new Short(pasData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of longs to Vector.
     *
     * @param palData array of long data
     * @return equivalent collection of Long objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final long[] palData) {
        Vector oVector = new Vector(palData.length);

        for (int i = 0; i < palData.length; i++) {
            oVector.add(new Long(palData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of characters to Vector.
     *
     * @param pacData array of character data
     * @return equivalent collection of Character objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final char[] pacData) {
        Vector oVector = new Vector(pacData.length);

        for (int i = 0; i < pacData.length; i++) {
            oVector.add(new Character(pacData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of bytes to Vector.
     *
     * @param patData array of byte data
     * @return equivalent collection of Byte objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final byte[] patData) {
        Vector oVector = new Vector(patData.length);

        for (int i = 0; i < patData.length; i++) {
            oVector.add(new Byte(patData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of Strings to Vector.
     *
     * @param pastrData array of String data
     * @return equivalent collection of String objects
     * @since 0.3.0.3
     */
    public static Vector arrayToVector(final String[] pastrData) {
        Vector oVector = new Vector(pastrData.length);

        for (int i = 0; i < pastrData.length; i++) {
            oVector.add(new String(pastrData[i]));
        }

        return oVector;
    }

    /**
     * Converts array of Objects to Vector.
     *
     * @param paoData array of Object data
     * @return equivalent collection of objects
     * @since 0.3.0.6
     */
    public static Vector arrayToVector(final Object[] paoData) {
        Vector oVector = new Vector(paoData.length);

        for (int i = 0; i < paoData.length; i++) {
            oVector.add(paoData[i]);
        }

        return oVector;
    }

    /**
     * Converts array of Strings to a single string separated by
     * the specified delimeter.
     *
     * @param pastrData string data to concatenate
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final String[] pastrData, final String pstrDelimeter) {
        String strRetVal = pastrData[0];

        if (pastrData.length > 0) {
            for (int i = 1; i < pastrData.length; i++) {
                strRetVal += pstrDelimeter + pastrData[i];
            }
        }

        return strRetVal;
    }

    /**
     * Converts array of integers to a single string separated by
     * the specified delimeter.
     *
     * @param paiData int data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final int[] paiData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (paiData.length > 0) {
            oRetVal.append(paiData[0]);

            for (int i = 1; i < paiData.length; i++) {
                oRetVal.append(pstrDelimeter).append(paiData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of Objects to a single string separated by
     * the specified delimeter.
     *
     * @param paoData Object data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final Object[] paoData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (paoData.length > 0) {
            oRetVal.append(paoData[0]);

            for (int i = 1; i < paoData.length; i++) {
                oRetVal.append(pstrDelimeter).append(paoData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of longs to a single string separated by
     * the specified delimeter.
     *
     * @param palData long data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final long[] palData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (palData.length > 0) {
            oRetVal.append(palData[0]);

            for (int i = 1; i < palData.length; i++) {
                oRetVal.append(pstrDelimeter).append(palData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of floats to a single string separated by
     * the specified delimeter.
     *
     * @param pafData float data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final float[] pafData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (pafData.length > 0) {
            oRetVal.append(pafData[0]);

            for (int i = 1; i < pafData.length; i++) {
                oRetVal.append(pstrDelimeter).append(pafData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of doubles to a single string separated by
     * the specified delimeter.
     *
     * @param padData double data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final double[] padData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (padData.length > 0) {
            oRetVal.append(padData[0]);

            for (int i = 1; i < padData.length; i++) {
                oRetVal.append(pstrDelimeter).append(padData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of bytes to a single string separated by
     * the specified delimeter.
     *
     * @param patData byte data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final byte[] patData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (patData.length > 0) {
            oRetVal.append(patData[0]);

            for (int i = 1; i < patData.length; i++) {
                oRetVal.append(pstrDelimeter).append(patData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of booleans to a single string separated by
     * the specified delimeter.
     *
     * @param pabData boolean data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final boolean[] pabData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (pabData.length > 0) {
            oRetVal.append(pabData[0]);

            for (int i = 1; i < pabData.length; i++) {
                oRetVal.append(pstrDelimeter).append(pabData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of characters to a single string separated by
     * the specified delimeter.
     *
     * @param pacData charater data to append
     * @param pstrDelimeter data elements separator
     * @return the resulting combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToDelimitedString(final char[] pacData, final String pstrDelimeter) {
        StringBuffer oRetVal = new StringBuffer();

        if (pacData.length > 0) {
            oRetVal.append(pacData[0]);

            for (int i = 1; i < pacData.length; i++) {
                oRetVal.append(pstrDelimeter).append(pacData[i]);
            }
        }

        return oRetVal.toString();
    }

    /**
     * Converts array of Strings to a single space-separated String.
     *
     * @param pastrData array of String data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final String[] pastrData) {
        return arrayToDelimitedString(pastrData, " ");
    }

    /**
     * Converts array of Objects to a single space-separated String.
     *
     * @param paoData array of Object data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final Object[] paoData) {
        return arrayToDelimitedString(paoData, " ");
    }

    /**
     * Converts array of integers to a single space-separated String.
     *
     * @param paiData array of integer data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final int[] paiData) {
        return arrayToDelimitedString(paiData, " ");
    }

    /**
     * Converts array of longs to a single space-separated String.
     *
     * @param palData array of long data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final long[] palData) {
        return arrayToDelimitedString(palData, " ");
    }

    /**
     * Converts array of floats to a single space-separated String.
     *
     * @param pafData array of float data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final float[] pafData) {
        return arrayToDelimitedString(pafData, " ");
    }

    /**
     * Converts array of doubles to a single space-separated String.
     *
     * @param padData array of double data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final double[] padData) {
        return arrayToDelimitedString(padData, " ");
    }

    /**
     * Converts array of bytes to a single space-separated String.
     *
     * @param patData array of byte data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final byte[] patData) {
        return arrayToDelimitedString(patData, " ");
    }

    /**
     * Converts array of booleans to a single space-separated String.
     *
     * @param pabData array of boolean data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final boolean[] pabData) {
        return arrayToDelimitedString(pabData, " ");
    }

    /**
     * Converts array of characters to a single space-separated String.
     *
     * @param pacData array of charater data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToString(final char[] pacData) {
        return arrayToDelimitedString(pacData, " ");
    }

    /**
     * Converts array of Strings to a single comma-separated String.
     *
     * @param pastrData array of String data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final String[] pastrData) {
        return arrayToDelimitedString(pastrData, ",");
    }

    /**
     * Converts array of Objects to a single comma-separated String.
     *
     * @param paoData array of Object data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final Object[] paoData) {
        return arrayToDelimitedString(paoData, ",");
    }

    /**
     * Converts array of integers to a single comma-separated String.
     *
     * @param paiData array of integer data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final int[] paiData) {
        return arrayToDelimitedString(paiData, ",");
    }

    /**
     * Converts array of longs to a single comma-separated String.
     *
     * @param palData array of long data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final long[] palData) {
        return arrayToDelimitedString(palData, ",");
    }

    /**
     * Converts array of floats to a single comma-separated String.
     *
     * @param pafData array of float data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final float[] pafData) {
        return arrayToDelimitedString(pafData, ",");
    }

    /**
     * Converts array of doubles to a single comma-separated String.
     *
     * @param padData array of double data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final double[] padData) {
        return arrayToDelimitedString(padData, ",");
    }

    /**
     * Converts array of bytes to a single comma-separated String.
     *
     * @param patData array of byte data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final byte[] patData) {
        return arrayToDelimitedString(patData, ",");
    }

    /**
     * Converts array of booleans to a single comma-separated String.
     *
     * @param pabData array of boolean data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final boolean[] pabData) {
        return arrayToDelimitedString(pabData, ",");
    }

    /**
     * Converts array of charaters to a single comma-separated String.
     *
     * @param pacData array of charater data
     * @return equivalent combined string
     *
     * @since 0.3.0.5
     */
    public static String arrayToCSV(final char[] pacData) {
        return arrayToDelimitedString(pacData, ",");
    }

    /**
     * Provides an array-of-objects-to-List bridge.
     * Wraps <code>java.util.Arrays.asList()</code>.
     *
     * @param paoObjects array of objects
     * @return corresponding List collection
     * @since 0.3.0.3
     */
    public static java.util.List asList(Object[] paoObjects) {
        return java.util.Arrays.asList(paoObjects);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource sourc earray of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = paiSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param paiSource sourc earray of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int[] paiSource, int piHowMany) {
        copy(padDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param paiSource source array of ints
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int[] paiSource) {
        copy(padDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = paiSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param paiSource source array of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int[] paiSource, int piHowMany) {
        copy(pafDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param paiSource source array of ints
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int[] paiSource) {
        copy(pafDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = paiSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of longs.
     *
     * @param palDestination destination array of longs
     * @param paiSource source array of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int[] paiSource, int piHowMany) {
        copy(palDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of longs.
     *
     * @param palDestination destination array of longs
     * @param paiSource source array of ints
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int[] paiSource) {
        copy(palDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = (short) paiSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param paiSource source array of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int[] paiSource, int piHowMany) {
        copy(pasDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param paiSource source array of ints
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int[] paiSource) {
        copy(pasDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = (byte) (paiSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param paiSource source array of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int[] paiSource, int piHowMany) {
        copy(patDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param paiSource sourc earray of ints
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int[] paiSource) {
        copy(patDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pacDestination[piDestinationFrom + i] = (char) paiSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param paiSource sourc earray of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int[] paiSource, int piHowMany) {
        copy(pacDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param paiSource sourc earray of ints
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int[] paiSource) {
        copy(pacDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = (int) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, double[] padSource, int piHowMany) {
        copy(paiDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of ints.
     *
     * @param paiDestination destination array of ints
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, double[] padSource) {
        copy(paiDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pacDestination[piDestinationFrom + i] = (char) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, double[] padSource, int piHowMany) {
        copy(pacDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, double[] padSource) {
        copy(pacDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = (byte) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, double[] padSource, int piHowMany) {
        copy(patDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, double[] padSource) {
        copy(patDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = (float) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, double[] padSource, int piHowMany) {
        copy(pafDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, double[] padSource) {
        copy(pafDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = (short) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, double[] padSource, int piHowMany) {
        copy(pasDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, double[] padSource) {
        copy(pasDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = (long) padSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of longs.
     *
     * @param palDestination destination array of longs
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, double[] padSource, int piHowMany) {
        copy(palDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of longs.
     *
     * @param palDestination destination array of longs
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, double[] padSource) {
        copy(palDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pacDestination[piDestinationFrom + i] = (char) pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, float[] pafSource, int piHowMany) {
        copy(pacDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, float[] pafSource) {
        copy(pacDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = (byte) pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of bytes.
     *
     * @param patDestination destination array of characters
     * @param pafSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, float[] pafSource, int piHowMany) {
        copy(patDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of characters.
     *
     * @param patDestination destination array of bytes
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, float[] pafSource) {
        copy(patDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = (int) pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, float[] pafSource, int piHowMany) {
        copy(paiDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, float[] pafSource) {
        copy(paiDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = (short) pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, float[] pafSource, int piHowMany) {
        copy(pasDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, float[] pafSource) {
        copy(pasDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = (long) pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, float[] pafSource, int piHowMany) {
        copy(palDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, float[] pafSource) {
        copy(palDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = pafSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, float[] pafSource, int piHowMany) {
        copy(padDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, float[] pafSource) {
        copy(padDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, short[] pasSource, int piHowMany) {
        copy(padDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, short[] pasSource) {
        copy(padDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pacDestination[piDestinationFrom + i] = (char) pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, short[] pasSource, int piHowMany) {
        copy(pacDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, short[] pasSource) {
        copy(pacDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = (byte) pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, short[] pasSource, int piHowMany) {
        copy(patDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, short[] pasSource) {
        copy(patDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, short[] pasSource, int piHowMany) {
        copy(paiDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, short[] pasSource) {
        copy(paiDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, short[] pasSource, int piHowMany) {
        copy(pafDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, short[] pasSource) {
        copy(pafDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = pasSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pasSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, short[] pasSource, int piHowMany) {
        copy(palDestination, 0, pasSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, short[] pasSource) {
        copy(palDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of longs.
     *
     * @param palDestination destination array of longs
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, byte[] patSource, int piHowMany) {
        copy(palDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of longs.
     *
     * @param palDestination destination array of longs
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, byte[] patSource) {
        copy(palDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, byte[] patSource, int piHowMany) {
        copy(padDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, byte[] patSource) {
        copy(padDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, byte[] patSource, int piHowMany) {
        copy(pasDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, byte[] patSource) {
        copy(pasDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, byte[] patSource, int piHowMany) {
        copy(pafDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, byte[] patSource) {
        copy(pafDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pacDestination[piDestinationFrom + i] = (char) patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of characters.
     *
     * @param pacDestination destination array of characters
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, byte[] patSource, int piHowMany) {
        copy(pacDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of bytes.
     *
     * @param pacDestination destination array of characters
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(char[] pacDestination, byte[] patSource) {
        copy(pacDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = patSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, byte[] patSource, int piHowMany) {
        copy(paiDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of bytes into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, byte[] patSource) {
        copy(paiDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, char[] pacSource, int piHowMany) {
        copy(paiDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, char[] pacSource) {
        copy(paiDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = (byte) pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, char[] pacSource, int piHowMany) {
        copy(patDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, char[] pacSource) {
        copy(patDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = (short) pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, char[] pacSource, int piHowMany) {
        copy(pasDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, char[] pacSource) {
        copy(pasDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, char[] pacSource, int piHowMany) {
        copy(palDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, char[] pacSource) {
        copy(palDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, char[] pacSource, int piHowMany) {
        copy(pafDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, char[] pacSource) {
        copy(pafDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N character elements
     * from an array of characters into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of characters
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = pacSource[piSourceFrom + i];
    }

    /**
     * Copy-conversion method that copies N character elements
     * from an array of characters into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pacSource source array of characters
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, char[] pacSource, int piHowMany) {
        copy(padDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all character elements
     * from an array of characters into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pacSource source array of characters
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, char[] pacSource) {
        copy(padDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N int elements
     * from an array of ints into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param paiSource source array of ints
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, int[] paiSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = paiSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N int elements
     * from an array of ints into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param paiSource source array of ints
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int[] paiSource, int piHowMany) {
        copy(pstrDestination, 0, paiSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all int elements
     * from an array of ints into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param paiSource source array of ints
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int[] paiSource) {
        copy(pstrDestination, 0, paiSource, 0, paiSource.length);
    }

    /**
     * General copy-conversion method that copies N char elements
     * from an array of chars into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pacSource source array of chars
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, char[] pacSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = pacSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N char elements
     * from an array of chars into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param pacSource source array of chars
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, char[] pacSource, int piHowMany) {
        copy(pstrDestination, 0, pacSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all char elements
     * from an array of chars into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param pacSource source array of chars
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, char[] pacSource) {
        copy(pstrDestination, 0, pacSource, 0, pacSource.length);
    }

    /**
     * General copy-conversion method that copies N byte elements
     * from an array of bytes into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param patSource source array of bytes
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, byte[] patSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = patSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N byte elements
     * from an array of bytes into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param patSource source array of bytes
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, byte[] patSource, int piHowMany) {
        copy(pstrDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all byte elements
     * from an array of ints into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param patSource source array of bytes
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, byte[] patSource) {
        copy(pstrDestination, 0, patSource, 0, patSource.length);
    }

    /**
     * General copy-conversion method that copies N short elements
     * from an array of shorts into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pasSource source array of shorts
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, short[] pasSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = pasSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N short elements
     * from an array of shorts into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param patSource source array of shorts
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, short[] patSource, int piHowMany) {
        copy(pstrDestination, 0, patSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all short elements
     * from an array of shorts into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param pasSource source array of shorts
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, short[] pasSource) {
        copy(pstrDestination, 0, pasSource, 0, pasSource.length);
    }

    /**
     * General copy-conversion method that copies N long elements
     * from an array of longs into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param palSource source array of longs
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, long[] palSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = palSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N long elements
     * from an array of longs into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param palSource source array of longs
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, long[] palSource, int piHowMany) {
        copy(pstrDestination, 0, palSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all long elements
     * from an array of longs into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param palSource source array of longs
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, long[] palSource) {
        copy(pstrDestination, 0, palSource, 0, palSource.length);
    }

    /**
     * General copy-conversion method that copies N float elements
     * from an array of floats into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pafSource source array of floats
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, float[] pafSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = pafSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N float elements
     * from an array of floats into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param pafSource source array of floats
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, float[] pafSource, int piHowMany) {
        copy(pstrDestination, 0, pafSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all float elements
     * from an array of floats into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param pafSource source array of floats
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, float[] pafSource) {
        copy(pstrDestination, 0, pafSource, 0, pafSource.length);
    }

    /**
     * General copy-conversion method that copies N double elements
     * from an array of doubles into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param piDestinationFrom index in the destination to start place elements at
     * @param padSource source array of doubles
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, int piDestinationFrom, double[] padSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pstrDestination[piDestinationFrom + i] = padSource[piSourceFrom + i] + "";
    }

    /**
     * Copy-conversion method that copies N double elements
     * from an array of doubles into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param padSource source array of doubles
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, double[] padSource, int piHowMany) {
        copy(pstrDestination, 0, padSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all double elements
     * from an array of doubles into array of Strings.
     *
     * @param pstrDestination destination array of Strings
     * @param padSource source array of doubles
     * @since 0.3.0.3
     */
    public static void copy(String[] pstrDestination, double[] padSource) {
        copy(pstrDestination, 0, padSource, 0, padSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            padDestination[piDestinationFrom + i] = Double.parseDouble(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, String[] pastrSource, int piHowMany) {
        copy(padDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of doubles.
     *
     * @param padDestination destination array of doubles
     * @param pastrSource source array of Strings
     * @since 0.3.0.3
     */
    public static void copy(double[] padDestination, String[] pastrSource) {
        copy(padDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pafDestination[piDestinationFrom + i] = Float.parseFloat(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(float[] pafDestination, String[] pastrSource, int piHowMany) {
        copy(pafDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of floats.
     *
     * @param pafDestination destination array of floats
     * @param pastrSource source array of Strings
     */
    public static void copy(float[] pafDestination, String[] pastrSource) {
        copy(pafDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of longs.
     *
     * @param palDestination destination array of longs
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            palDestination[piDestinationFrom + i] = Long.parseLong(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, String[] pastrSource, int piHowMany) {
        copy(palDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of longs.
     *
     * @param palDestination destination array of longs
     * @param pastrSource source array of Strings
     * @since 0.3.0.3
     */
    public static void copy(long[] palDestination, String[] pastrSource) {
        copy(palDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            paiDestination[piDestinationFrom + i] = Integer.parseInt(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, String[] pastrSource, int piHowMany) {
        copy(paiDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of integers.
     *
     * @param paiDestination destination array of integers
     * @param pastrSource source array of Strings
     * @since 0.3.0.3
     */
    public static void copy(int[] paiDestination, String[] pastrSource) {
        copy(paiDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            pasDestination[piDestinationFrom + i] = Short.parseShort(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, String[] pastrSource, int piHowMany) {
        copy(pasDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of shorts.
     *
     * @param pasDestination destination array of shorts
     * @param pastrSource source array of Strings
     * @since 0.3.0.3
     */
    public static void copy(short[] pasDestination, String[] pastrSource) {
        copy(pasDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /**
     * General copy-conversion method that copies N String elements
     * from an array of Strings into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param piDestinationFrom index in the destination to start place elements at
     * @param pastrSource source array of Strings
     * @param piSourceFrom index in the source to start take elements from
     * @param piHowMany N; how many elements to copy
     *
     * @throws NumberFormatException if one of the Strings doesn't have a properly formatted number
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, int piDestinationFrom, String[] pastrSource, int piSourceFrom,
            int piHowMany) {
        for (int i = 0; i < piHowMany; i++)
            patDestination[piDestinationFrom + i] = Byte.parseByte(pastrSource[piSourceFrom + i]);
    }

    /**
     * Copy-conversion method that copies N String elements
     * from an array of Strings into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pastrSource source array of Strings
     * @param piHowMany N; how many elements to copy
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, String[] pastrSource, int piHowMany) {
        copy(patDestination, 0, pastrSource, 0, piHowMany);
    }

    /**
     * Copy-conversion method that copies all String elements
     * from an array of Strings into array of bytes.
     *
     * @param patDestination destination array of bytes
     * @param pastrSource source array of Strings
     * @since 0.3.0.3
     */
    public static void copy(byte[] patDestination, String[] pastrSource) {
        copy(patDestination, 0, pastrSource, 0, pastrSource.length);
    }

    /*
     * -------------
     * Binary Search
     * -------------
     */

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param pafArray the array of floats to be searched
     * @param pfValue the value of float to be searched in the array of floats
     * @return index of the searched value if it is in the array of floats
     * @since 0.3.0.3
     */
    public static int binarySearch(float[] pafArray, float pfValue) {
        return java.util.Arrays.binarySearch(pafArray, pfValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param padArray the array of doubles to be searched
     * @param pdValue the value of double to be searched in the array of doubles
     * @return index of the searched value if it is in the array of doubles
     * @since 0.3.0.3
     */
    public static int binarySearch(double[] padArray, double pdValue) {
        return java.util.Arrays.binarySearch(padArray, pdValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param pasArray the array of shorts to be searched
     * @param psValue the value of shorts to be searched in the array of shorts
     * @return index of the searched value if it is in the array of shorts
     * @since 0.3.0.3
     */
    public static int binarySearch(short[] pasArray, short psValue) {
        return java.util.Arrays.binarySearch(pasArray, psValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param paiArray the array of integers to be searched
     * @param piValue the value of integer to be searched in the array of integers
     * @return index of the searched value if it is in the array of integers
     * @since 0.3.0.3
     */
    public static int binarySearch(int[] paiArray, int piValue) {
        return java.util.Arrays.binarySearch(paiArray, piValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param patArray the array of bytes to be searched
     * @param ptValue the value of byte to be searched in the array of bytes
     * @return index of the searched value if it is in the array of bytes
     * @since 0.3.0.3
     */
    public static int binarySearch(byte[] patArray, byte ptValue) {
        return java.util.Arrays.binarySearch(patArray, ptValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param pacArray the array of characters to be searched
     * @param pcValue the value of character to be searched in the array of characters
     * @return index of the searched value if it is in the array of characters
     * @since 0.3.0.3
     */
    public static int binarySearch(char[] pacArray, char pcValue) {
        return java.util.Arrays.binarySearch(pacArray, pcValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param paoArray the array of objects to be searched
     * @param poValue the value of object to be searched in the array of objects
     * @return index of the searched value if it is in the array of objects
     * @throws ClassCastException if the type of the searched value is not match the type of the array
     * @since 0.3.0.3
     */
    public static int binarySearch(Object[] paoArray, Object poValue) {
        return java.util.Arrays.binarySearch(paoArray, poValue);
    }

    /**
     * The <code>binarySearch()</code> routine is based on <code>java.util.Arrays.binarySearch()</code>.
     *
     * @param paoArray the array of objects to be searched
     * @param poValue the value of object to be searched in the array of objects
     * @param poComparator the comparator to decide the order of the array
     * @return index of the searched value if it is in the array of objects
     * @throws ClassCastException if the type of the searched value is not match the type of the array
     * @since 0.3.0.3
     */
    public static int binarySearch(Object[] paoArray, Object poValue, Comparator poComparator) {
        return java.util.Arrays.binarySearch(paoArray, poValue, poComparator);
    }

    /*
     * ----
     * Misc
     * ----
     */

    /**
     * Returns source code revision information.
     *
     * @return revision string
     * @since 0.3.0.2
     */
    public static String getMARFSourceCodeRevision() {
        return "$Revision: 1.38 $";
    }
}

// EOF