code: public byte[] getArray (final int length) {
          for (int i = 0; i < size; ++i) {
              if (length == arrays[i].length) {
                  // swap (if not already at the front) and return
                  if (i > 0) {
                      tmp = arrays[i];
                      arrays[i] = arrays[i - 1];
                      arrays[i - 1] = tmp;
                      return tmp;
                  }
                  // no swapping, so element was and still is at the front of the
                  // list
                  return arrays[0];
              }
          }
          // requested array does not exist, add to tail of queue,
          tmp = new byte[length];
          if (size == capacity) --size;// replace last element
          arrays[size] = tmp;
          ++size;
          return tmp;
      }
docs: Returns a byte array of the specified length.
  <p>
  Note that the returned array may have been used before and therefore the array's values are not guaranteed to be
  <code>0</code>.
  <p>
  The method consecutively checks {@link #arrays} for an array of the correct length. If such an array exists, it
  will be moved to one index position closer to the front of the array (if possible), speeding up future retrievals
  of the same array.
  
  @param length the length of the returned array
  @return a byte array of the specified length