public byte[] store() throws IOException {
		ByteArrayOutputStream bs = new ByteArrayOutputStream();
		DataOutputStream ds = new DataOutputStream(bs);
		if (this instanceof InnerNode) {
			ds.writeInt(SpatialIndex.PersistentIndex);
		} else {
			ds.writeInt(SpatialIndex.PersistentLeaf);
		}
//		ds.writeInt(m_identifier);
		ds.writeInt(slots);
		if (this instanceof InnerNode) {
			IO.writeIntArray(ds, m_pIdentifier);
		}
		for (int i = 0; i < slots; i ++) {
			ds.writeLong((Long) keys[i]);
		}
		for (int i = 0; i < slots + (this.isInnerNode() ? 1 : 0); i ++) {
//				DataIO.writeBytes(ds, (byte[])values[i]);
			if (values[i] == null) {
				ds.writeBoolean(true);
			} else {
				ds.writeBoolean(false);
				((V)values[i]).write(ds);
			}
//				DataIO.writeString(ds, values[i].toString());
		}
		if (this instanceof LeafNode) {
			ds.writeInt(n_identifier);
		}
		ds.flush();
		return bs.toByteArray();
	}