public void EnqueueBuilderForInstance(ITerminalDescriptor descriptor, IDataBuilder <TData> builder)
        {
            if (!BuildersByDescriptor.ContainsKey(descriptor))
            {
                BuildersByDescriptor[descriptor] = new List <IDataBuilder <TData> >();
            }

            BuildersByDescriptor[descriptor].Add(builder);
        }
 public virtual async Task BuildInstanceAsync(ITerminalDescriptor descriptor, TData instance)
 {
     if (BuildersByDescriptor.ContainsKey(descriptor))
     {
         foreach (var builder in BuildersByDescriptor[descriptor])
         {
             await builder.DoWorkAsync(instance);
         }
     }
 }