private void buildAddrSpaceArray() {
		ArrayList<AddressSpace> spaceList = new ArrayList<>();
		AddressSpace[] allSpaces = addrFactory.getAllAddressSpaces();
		for (AddressSpace spc : allSpaces) {
			int type = spc.getType();
			if (type != AddressSpace.TYPE_CONSTANT && type != AddressSpace.TYPE_RAM &&
				type != AddressSpace.TYPE_REGISTER && type != AddressSpace.TYPE_UNIQUE &&
				type != AddressSpace.TYPE_OTHER) {
				continue;
			}
			int ind = spc.getUnique();
			while (spaceList.size() <= ind) {
				spaceList.add(null);
			}
			spaceList.set(ind, spc);
		}
		spaces = new AddressSpace[spaceList.size()];
		spaceList.toArray(spaces);
	}
Build a decoder for an input stream, where the decoder is set to read pages from the stream
"as needed".  An initial page is read from the stream by this constructor. But then
the stream must remain open and additional pages are read during the decoding process.
Calling close() after decoding, will close the underlying stream.
@param stream is the stream
@param desc is a descriptive string for the stream used in error messages
@throws IOException for problems initially reading from the stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PackedDecode.java