public XConstPoolImpl(ObjectInput in) throws IOException{
		int size = in.readUnsignedShort();
		ints = new int[size];
		for(int i=0; i<size; i++){
			ints[i] = in.readInt();
		}
		size = in.readUnsignedShort();
		longs = new long[size];
		for(int i=0; i<size; i++){
			longs[i] = in.readLong();
		}
		size = in.readUnsignedShort();
		floats = new float[size];
		for(int i=0; i<size; i++){
			floats[i] = in.readFloat();
		}
		size = in.readUnsignedShort();
		doubles = new double[size];
		for(int i=0; i<size; i++){
			doubles[i] = in.readDouble();
		}
		size = in.readUnsignedShort();
		strings = new String[size];
		for(int i=0; i<size; i++){
			strings[i] = in.readUTF();
		}
		size = in.readUnsignedShort();
		bytes = new byte[size][];
		for(int i=0; i<size; i++){
			int size2 = in.readUnsignedShort();
			byte[] b = new byte[size2];
			int readed = size2==0?0:in.read(b);
			if(readed!=size2){
				throw new IOException("Expected "+size2+" bytes but got "+readed);
			}
			bytes[i] = b;
		}
	}