public async Task <FileSystemResult> PopulateAsync() { using (await _populateLock.LockAsync()) { FileSystemResult r = await FS.CheckExpirations(); if (!r.IsOk) { return(r); } string url = AmazonList.FormatRest(FS.OAuth.EndPoint.MetadataUrl, Id); FileSystemResult <dynamic> fr = await List(url); if (!fr.IsOk) { return(new FileSystemResult(fr.Error)); } IntFiles = new List <AmazonFile>(); List <IDirectory> dirlist = new List <IDirectory>(); foreach (dynamic v in fr.Result) { if (v.kind == "FOLDER") { AmazonDirectory dir = new AmazonDirectory(FullName, FS) { Parent = this }; dir.SetData(JsonConvert.SerializeObject(v)); if ((dir.Attributes & ObjectAttributes.Trashed) != ObjectAttributes.Trashed) { dirlist.Add(dir); } } else if (v.kind == "FILE") { AmazonFile f = new AmazonFile(FullName, FS) { Parent = this }; f.SetData(JsonConvert.SerializeObject(v)); if ((f.Attributes & ObjectAttributes.Trashed) != ObjectAttributes.Trashed) { IntFiles.Add(f); } } } FS.Refs.AddDirectories(dirlist, this); IntDirectories = dirlist.Cast <AmazonDirectory>().ToList(); IsPopulated = true; return(new FileSystemResult()); } }