public IInstanceBuilder Clone()
 {
     var builder = new ConditionalInstanceBuilder();
     foreach (var item in _conditionalPipelineEngines)
         builder.Add(item.IsMatch, item.InstanceBuilder.Clone());
     if (_defaultInstanceBuilder != null)
         builder.Add(_defaultInstanceBuilder.Clone());
     return builder;
 }
 public IInstanceBuilder MakeGenericPipelineEngine(Type[] types)
 {
     var builder = new ConditionalInstanceBuilder();
     foreach (var item in _conditionalPipelineEngines)
         builder.Add(item.IsMatch, item.InstanceBuilder.MakeGenericPipelineEngine(types));
     if (_defaultInstanceBuilder != null)
         builder.Add(_defaultInstanceBuilder.MakeGenericPipelineEngine(types));
     return builder;
 }