public void back(int delta) {if (delta == 1 && 0 <= prevPtr) {currPtr = prevPtr;prevPtr = -1;if (!eof())parseEntry();return;} else if (delta <= 0)throw new ArrayIndexOutOfBoundsException(delta);final int[] trace = new int[delta + 1];Arrays.fill(trace, -1);int ptr = 0;while (ptr != currPtr) {System.arraycopy(trace, 1, trace, 0, delta);trace[delta] = ptr;while (raw[ptr] != 0)ptr++;ptr += OBJECT_ID_LENGTH + 1;}if (trace[1] == -1)throw new ArrayIndexOutOfBoundsException(delta);prevPtr = trace[0];currPtr = trace[1];parseEntry();}

public override void Back(int delta){if (delta == 1 && 0 <= prevPtr){currPtr = prevPtr;prevPtr = -1;if (!Eof){ParseEntry();}return;}else{if (delta <= 0){throw Sharpen.Extensions.CreateIndexOutOfRangeException(delta);}}int[] trace = new int[delta + 1];Arrays.Fill(trace, -1);int ptr = 0;while (ptr != currPtr){System.Array.Copy(trace, 1, trace, 0, delta);trace[delta] = ptr;while (raw[ptr] != 0){ptr++;}ptr += Constants.OBJECT_ID_LENGTH + 1;}if (trace[1] == -1){throw Sharpen.Extensions.CreateIndexOutOfRangeException(delta);}prevPtr = trace[0];currPtr = trace[1];ParseEntry();}
