private void ResolveFileChain() { VirtualDiskLayer file = _files[_files.Count - 1].First; while (file.NeedsParent) { bool foundParent = false; FileLocator locator = file.RelativeFileLocator; foreach (string posParent in file.GetParentLocations()) { if (locator.Exists(posParent)) { file = VirtualDisk.OpenDiskLayer(file.RelativeFileLocator, posParent, FileAccess.Read); _files.Add(new ThinkAway.Tuple <VirtualDiskLayer, Ownership>(file, Ownership.Dispose)); foundParent = true; break; } } if (!foundParent) { throw new IOException("Parent disk not found"); } } }