/// <summary> /// decodes the contexts at the current position </summary> protected internal virtual ISet <BytesRef> DecodeContexts(BytesRef scratch, ByteArrayDataInput tmpInput) { tmpInput.Reset(scratch.Bytes); tmpInput.SkipBytes(scratch.Length - 2); //skip to context set size ushort ctxSetSize = (ushort)tmpInput.ReadInt16(); scratch.Length -= 2; var contextSet = new JCG.HashSet <BytesRef>(); for (ushort i = 0; i < ctxSetSize; i++) { tmpInput.Position = scratch.Length - 2; ushort curContextLength = (ushort)tmpInput.ReadInt16(); scratch.Length -= 2; tmpInput.Position = scratch.Length - curContextLength; BytesRef contextSpare = new BytesRef(curContextLength); tmpInput.ReadBytes(contextSpare.Bytes, 0, curContextLength); contextSpare.Length = curContextLength; contextSet.Add(contextSpare); scratch.Length -= curContextLength; } // LUCENENET TODO: We are writing the data forward. // Not sure exactly why, but when we read it back it // is reversed. So, we need to fix that before returning the result. // If the underlying problem is found and fixed, then this line can just be // return contextSet; return(new JCG.HashSet <BytesRef>(contextSet.Reverse())); }