public void removeCurrentClass()

in src/main/java/org/apache/commons/compress/harmony/pack200/ClassBands.java [985:1103]


	public void removeCurrentClass() {
		// Note - this doesn't remove any entries added to the constant pool but
		// that shouldn't be a problem
		if ((class_flags[index] & (1 << 17)) != 0) {
			classSourceFile.remove(classSourceFile.size() - 1);
		}
		if ((class_flags[index] & (1 << 18)) != 0) {
			classEnclosingMethodClass.remove(classEnclosingMethodClass.size() - 1);
			classEnclosingMethodDesc.remove(classEnclosingMethodDesc.size() - 1);
		}
		if ((class_flags[index] & (1 << 19)) != 0) {
			classSignature.remove(classSignature.size() - 1);
		}
		if ((class_flags[index] & (1 << 21)) != 0) {
			class_RVA_bands.removeLatest();
		}
		if ((class_flags[index] & (1 << 22)) != 0) {
			class_RIA_bands.removeLatest();
		}
		for (final Long flagsL : tempFieldFlags) {
			final long flags = flagsL.longValue();
			if ((flags & (1 << 19)) != 0) {
				fieldSignature.remove(fieldSignature.size() - 1);
			}
			if ((flags & (1 << 17)) != 0) {
				fieldConstantValueKQ.remove(fieldConstantValueKQ.size() - 1);
			}
			if ((flags & (1 << 21)) != 0) {
				field_RVA_bands.removeLatest();
			}
			if ((flags & (1 << 22)) != 0) {
				field_RIA_bands.removeLatest();
			}
		}
		for (final Long flagsL : tempMethodFlags) {
			final long flags = flagsL.longValue();
			if ((flags & (1 << 19)) != 0) {
				methodSignature.remove(methodSignature.size() - 1);
			}
			if ((flags & (1 << 18)) != 0) {
				final int exceptions = methodExceptionNumber.remove(methodExceptionNumber.size() - 1);
				for (int i = 0; i < exceptions; i++) {
					methodExceptionClasses.remove(methodExceptionClasses.size() - 1);
				}
			}
			if ((flags & (1 << 17)) != 0) { // has code attribute
				codeMaxLocals.remove(codeMaxLocals.size() - 1);
				codeMaxStack.remove(codeMaxStack.size() - 1);
				final int handlers = codeHandlerCount.remove(codeHandlerCount.size() - 1);
				for (int i = 0; i < handlers; i++) {
					final int index = codeHandlerStartP.size() - 1;
					codeHandlerStartP.remove(index);
					codeHandlerEndPO.remove(index);
					codeHandlerCatchPO.remove(index);
					codeHandlerClass.remove(index);
				}
				if (!stripDebug) {
					final long cdeFlags = codeFlags.remove(codeFlags.size() - 1).longValue();
					final int numLocalVariables = codeLocalVariableTableN.remove(codeLocalVariableTableN.size() - 1);
					for (int i = 0; i < numLocalVariables; i++) {
						final int location = codeLocalVariableTableBciP.size() - 1;
						codeLocalVariableTableBciP.remove(location);
						codeLocalVariableTableSpanO.remove(location);
						codeLocalVariableTableNameRU.remove(location);
						codeLocalVariableTableTypeRS.remove(location);
						codeLocalVariableTableSlot.remove(location);
					}
					if ((cdeFlags & (1 << 3)) != 0) {
						final int numLocalVariablesInTypeTable = codeLocalVariableTypeTableN
								.remove(codeLocalVariableTypeTableN.size() - 1);
						for (int i = 0; i < numLocalVariablesInTypeTable; i++) {
							final int location = codeLocalVariableTypeTableBciP.size() - 1;
							codeLocalVariableTypeTableBciP.remove(location);
							codeLocalVariableTypeTableSpanO.remove(location);
							codeLocalVariableTypeTableNameRU.remove(location);
							codeLocalVariableTypeTableTypeRS.remove(location);
							codeLocalVariableTypeTableSlot.remove(location);
						}
					}
					if ((cdeFlags & (1 << 1)) != 0) {
						final int numLineNumbers = codeLineNumberTableN.remove(codeLineNumberTableN.size() - 1);
						for (int i = 0; i < numLineNumbers; i++) {
							final int location = codeLineNumberTableBciP.size() - 1;
							codeLineNumberTableBciP.remove(location);
							codeLineNumberTableLine.remove(location);
						}
					}
				}
			}
			if ((flags & (1 << 21)) != 0) {
				method_RVA_bands.removeLatest();
			}
			if ((flags & (1 << 22)) != 0) {
				method_RIA_bands.removeLatest();
			}
			if ((flags & (1 << 23)) != 0) {
				method_RVPA_bands.removeLatest();
			}
			if ((flags & (1 << 24)) != 0) {
				method_RIPA_bands.removeLatest();
			}
			if ((flags & (1 << 25)) != 0) {
				method_AD_bands.removeLatest();
			}
		}
		class_this[index] = null;
		class_super[index] = null;
		class_interface_count[index] = 0;
		class_interface[index] = null;
		major_versions[index] = 0;
		class_flags[index] = 0;
		tempFieldDesc.clear();
		tempFieldFlags.clear();
		tempMethodDesc.clear();
		tempMethodFlags.clear();
		if (index > 0) {
			index--;
		}
	}