code: private byte[] concat(final byte[] input1, final byte[] input2, final int position) {
          // Preconition checks
          assert input1 != null : "Input 1 must be specified";
          assert input2 != null : "Input 2 must be specified";
          assert position >= 0 : "Position must be 0 or higher";
          // Allocate a new array of enough space (either current size or position + input2.length, whichever is greater)
          final int newSize = position < input1.length ? input1.length + input2.length : position + input2.length;
          final byte[] merged = new byte[newSize];
          // Copy in the contents of input 1 with 0 offset
          System.arraycopy(input1, 0, merged, 0, input1.length);
          // Copy in the contents of input2 with offset the length of input 1
          System.arraycopy(input2, 0, merged, position, input2.length);
          return merged;
      }
docs: Creates a new array which is the concatenated result of the two inputs, at the designated position (to be filled
  with 0x00) in the case of a gap).
  
  @param input1
  @param input2
  @param position
  @return