internal static String DecodeSequence(byte[] seq, int start, int length, char[][] planes) {
StringBuilder buf = new StringBuilder();
int end = start + length;
int currentPlane = 0;
for (int k = start; k < end; ++k) {
int one = (int)seq[k] & 0xff;
char[] plane = planes[currentPlane];
int cid = plane[one];
if ((cid & 0x8000) == 0) {
buf.Append((char)cid);
currentPlane = 0;
}
else
currentPlane = cid & 0x7fff;
}
return buf.ToString();
}