I want to prove the following JML contract:
```
/*@ normal_behavior
      @  requires str.length > 0;
      @  ensures !(\exists int i; 0 <= i < str.length / 2; str[i] != str[str.length - i - 1]) ==> \result == str;
      @  ensures (\exists int i; 0 <= i < str.length / 2; str[i] != str[str.length - i - 1]) ==>
      @          \result.length == 2 * str.length
      @       && (\forall int i; 0 <= i < str.length; \result[i] == str[i])
      @       && (\forall int i; 0 <= i < str.length; \result[str.length + i] == str[str.length - i - 1]);
      @  assignable \nothing;
      @*/
    public static char[] makePalindrome(char[] str) {
        if (isPalindrome(str)) {
            return str;
        }
        char[] result = new char[str.length * 2];
        copyInto(str, result, 0);
        copyInto(reverse(str), result, str.length);
        return result;
    }
```
Please provide a contract for `copyInto` that would allow me to close this proof. Assume that all other contracts are already defined in a suitable way.
The signature of `copyInto` is as follows:
```
private static void copyInto(char[] src, char[] dest, int pos)
``` You should write your response with 600 or more words.
user