code: public static final char[][] arrayConcat(char[][] first, char[] second)
  	{
  		if (second == null)
  		{
  			return first;
  		}
  		if (first == null)
  		{
  			return new char[][] { second };
  		}
  
  		int length = first.length;
  		char[][] result = new char[length + 1][];
  		System.arraycopy(first, 0, result, 0, length);
  		result[length] = second;
  		return result;
  	}
docs: Answers a new array adding the second array at the end of first array. It answers null if the first and second
  are null. If the first array is null, then a new array char[][] is created with second. If the second array is
  null, then the first array is returned. <br>
  <br>
  For example:
  <ol>
  <li>
  
  <pre>
  first = null
  second = { 'a' }
  =&gt; result = { { ' a' } }
  </pre>
  <li>
  
  <pre>
  first = { { ' a' } }
  second = null
  =&gt; result = { { ' a' } }
  </pre>
  
  </li>
  <li>
  
  <pre>
  first = { { ' a' } }
  second = { ' b' }
  =&gt; result = { { ' a' } , { ' b' } }
  </pre>
  
  </li>
  </ol>
  
  @param first
  the first array to concatenate
  @param second
  the array to add at the end of the first array
  @return a new array adding the second array at the end of first array, or null if the two arrays are null.