public void ChangeValue(string input, string output, string root) { var resolver = new DependencyResolver <string, string>(); var splitInput = input.Split("|"); foreach (var value in splitInput) { var kv = value.Split(":"); var dependencies = kv.Length == 1 ? ImmutableArray <string> .Empty : ImmutableArray <string> .Create(kv[1].Select(c => c.ToString()).ToList()); resolver.ChangeValue(kv[0], value, kv[0] == root, dependencies); } var walker = resolver.CreateWalker(); var result = new StringBuilder(); var tasks = new List <Task <IDependencyChainNode <string> > >(); while (walker.Remaining > 0) { var nodeTask = walker.GetNextAsync(default);