Revert "Eliminate recursive calls between String.getChars and AbstractStringBuilder.append"

This reverts commit a318a7b86421714e64560c97e9f1279f2abfce7e.

Reason for revert: The information removed from the AIOOBE
message may be useful for developers, so let's have it back.
There is no reason to try and avoid recursive calls that
should be essentially impossible based on a non-reproducible
crash on an old Android version. And the mitigation was also
incomplete anyway as other similar unreachable recursive
paths were missed.

Bug: 201621581
Change-Id: I99ff5a3c6d11c93a0aee9093b038e3daa01adb5b
diff --git a/ojluni/src/main/java/java/lang/String.java b/ojluni/src/main/java/java/lang/String.java
index 672d13b..2ba7b1f 100644
--- a/ojluni/src/main/java/java/lang/String.java
+++ b/ojluni/src/main/java/java/lang/String.java
@@ -794,7 +794,7 @@
         }
 
         if (dstBegin < 0) {
-            throw new ArrayIndexOutOfBoundsException("dstBegin < 0");
+            throw new ArrayIndexOutOfBoundsException("dstBegin < 0. dstBegin=" + dstBegin);
         }
         // dstBegin can be equal to dst.length, but only in the case where zero chars are to be
         // copied.