public string Resolve(GR2Reader gr2) { Debug.Assert(IsValid); // Don't use a global string cache here, as string constants are rarely referenced twice, // unlike struct definitions if (Value == null) { var originalPos = gr2.Stream.Position; gr2.Seek(this); Value = gr2.ReadString(); gr2.Stream.Seek(originalPos, SeekOrigin.Begin); } return(Value); }