append (METACHAR_SEQUENCE_START);
newBuf.append (METACHAR_SEQUENCE_START);
    public void decodeMetacharacters (int start, int end)        throws StringIndexOutOfBoundsException    {        char  chars[] = toString().toCharArray();        int   i       = 0;        try        {            // Copy verbatim the region of characters prior to "start"            while (i < start)                append (chars[i++]);            // Process the region. First, allocate a PushbackReader than            // can handle up to 5 characters (4 characters for a Unicode            // code, plus the preceding "u").                        String         region = new String (chars, i, end - i);            StringReader   sr     = new StringReader (region);            PushbackReader pb     = new PushbackReader (sr, 5);            // Now, process the region.            for (;;)            {                int c;                if ((c = pb.read()) == -1)                    break;                if (c == METACHAR_SEQUENCE_START)                {                    if ((c = pb.read()) == -1)                    {                        // Incomplete metacharacter sequence at end of                        // region. Just pass along the backslash as is.                        append ((char) c);                    }                    else                    {                        c = decodeMetacharacter (c, pb);                        if (c == -1)                            break;                        if (c == -2) // Bad unicode sequence                            append (METACHAR_SEQUENCE_START);                        else                            append ((char) c);                    }                }                else                {                    append ((char) c);                }            }            // Copy verbatim the region of characters after "end"            i = end;            while (i < chars.length)                append (chars[i++]);        }        catch (ArrayIndexOutOfBoundsException ex)        {            throw new StringIndexOutOfBoundsException (String.valueOf (i));        }        catch (IOException ex)        {            throw new StringIndexOutOfBoundsException();        }    }