decodeMetacharacters (0, this.length());
while (i < start) newBuf.append (chars[i++]);      String         region = new String (chars, i, end - i); StringReader   sr     = new StringReader (region); PushbackReader pb     = new PushbackReader (sr, 5);    for (;;) { int c;  if ((c = pb.read()) == -1) break;  if (c == METACHAR_SEQUENCE_START) { if ((c = pb.read()) == -1) {    newBuf.append ((char) c); }  else { c = decodeMetacharacter (c, pb); if (c == -1) break;  if (c == -2) newBuf.append (METACHAR_SEQUENCE_START); else newBuf.append ((char) c); } }  else { newBuf.append ((char) c); } }    i = end; while (i < chars.length) newBuf.append (chars[i++]);
    public void decodeMetacharacters()    {        try        {            decodeMetacharacters (0, this.length());        }        catch (StringIndexOutOfBoundsException ex)        {            // Should never happen        }    }