void Resolve()
{
if (iItems == null)
{
iItems = new List<ITreeEntry>();
int offset = 0;
byte[] bytes = iReference.Contents;
try
{
while (offset < bytes.Length)
{
int begin = offset;
while (bytes[offset++] != 0) ;
int length = offset - begin - 1;
byte[] item = new byte[length];
Array.Copy(bytes, begin, item, 0, length);
string id = Hash.String(bytes, offset);
iItems.Add(new TreeItem(iReference.Repository, id, item));
offset += 20;
}
}
catch (IndexOutOfRangeException)
{
throw (new GitException("Tree " + Id + " corrupt"));
}
}
}