private string substring(int start, int end, int section)
{
if (!decoding) return str.Substring(start, end-start);
StringBuilder buf = new StringBuilder(end-start);
dpos = start;
while (dpos < end)
{
int ch = nextChar(section);
if (nextCharWasEscaped && ch < delimEscMap.Length && (delimEscMap[ch] & section) != 0)
buf.Append('\\');
buf.Append((char)ch);
}
return buf.ToString();
}