val = val | ((temp & 0x3f) << (i * 6));
val = val | ((temp & 0x3f) << ((i<<2)+(i<<1)));
		public boolean skipChar(int ch)			throws EOFException, EncodingException, ParseException {			int a = 0, c = 0, d = 0, val = 0;			int temp = XMLDoc[offset];			if (temp >= 0)				if (ch == temp) {					offset++;					return true;				} else {					return false;				}			temp = temp & 0xff;			switch (UTF8Char.byteCount(temp)) { // handle multi-byte code				case 2 :					c = 0x1f;					// A mask determine the val portion of the first byte					d = 6; // 					a = 1; //					break;				case 3 :					c = 0x0f;					d = 12;					a = 2;					break;				case 4 :					c = 0x07;					d = 18;					a = 3;					break;				case 5 :					c = 0x03;					d = 24;					a = 4;					break;				case 6 :					c = 0x01;					d = 30;					a = 5;					break;				default :					throw new ParseException("UTF 8 encoding error: should never happen");			}			val = (temp & c) << d;			int i = a - 1;			while (i >= 0) {				temp = XMLDoc[offset + a - i];				if ((temp & 0xc0) != 0x80)					throw new ParseException("UTF 8 encoding error: should never happen");				val = val | ((temp & 0x3f) << (i * 6));				i--;			}			if (val == ch) {				offset += a + 1;				return true;			} else {				return false;			}		}