*/
    public Class<?> getType() {
        int saveDepth = _depth;
        int saveLevel = _level;
        int saveNext = _next;
        int saveEnd = _end;
        try {
            int classHandle = nextType();
            if (classHandle > 0 && classHandle < CLASSES.length && CLASSES[classHandle] != null) {
                return CLASSES[classHandle];
            } else if (classHandle == CLASS_ARRAY) {
                _depth++;
                int componentClassHandle = nextType();
                return arrayClass(classForHandle(componentClassHandle), 1);
            } else if (classHandle == CLASS_MULTI_ARRAY) {
                _depth++;
                int componentClassHandle = nextType();
                checkSize(1);
                int dimensions = _bytes[_next++] & 0xFF;
                return arrayClass(classForHandle(componentClassHandle), dimensions);
            }

            else
                return classForHandle(classHandle);
        } finally {
            _end = saveEnd;
            _next = saveNext;
            _level = saveLevel;
            _depth = saveDepth;
        }
    }