public string Read(uint index)
{
if (index == 0)
return string.Empty;
string @string;
if (strings.TryGetValue (index, out @string))
return @string;
if (index > data.Length - 1)
return string.Empty;
@string = ReadStringAt (index);
if (@string.Length != 0)
strings.Add (index, @string);
return @string;
}