public (object, string[]) Resolve(string[] path) { if (path?.Length == 0) { return(null, Array.Empty <string>()); } switch (path[0]) { case "object": return(new Link { Cid = Object }, path.Skip(1)); case "type": return(Type, path.Skip(1)); case "tagger": return(path.Length == 1 ? (Tagger, Array.Empty <string>()) : Tagger.Resolve(path.Skip(1))); case "message": return(Message, path.Skip(1)); case "tag": return(Name, path.Skip(1)); default: return(null, path.Skip(1)); } }