@Override
		public boolean delete() throws IOException {
			if (hasLastKey) {
				synchronized (db) {
					long deleteKey = lastKey;
					hasLastKey = false;
					boolean success = deleteRecord(deleteKey);
					int newLen = keys.length - 1;
					if (deleteKey == key && keys.length > 1 /* && keyIndex < newLen */) {
						long[] newKeys = new long[newLen];
						System.arraycopy(keys, 0, newKeys, 0, keyIndex);
						System.arraycopy(keys, keyIndex + 1, newKeys, keyIndex, newLen - keyIndex);
						keys = newKeys;
						keyIndex = -(keyIndex + 1); // reflects non-existent key to initialize method
					}
					else {
						keys = null;
					}
					initialize(deleteKey);
					return success;
				}
			}
			return false;
		}
Initialize (or re-initialize) iterator state.
An empty or null keys array will force a complete initialization.
Otherwise, following the deletethe keys array and keyIndex should reflect the state
following a delete.
@param targetKey the initial key.  For construction this is the startKey, 
following a delete this is the deleted key.
@throws IOException thrown if IO error occurs
Ghidra/Framework/DB/src/main/java/db/Table.java