public void Add(HandlerCall call) { _stagedCalls.Add(call); var inputType = call.InputType(); if (inputType.IsConcrete()) { if (_chains.ContainsKey(inputType)) { call.AddClone(_chains[inputType]); } else { var chain = new HandlerChain(); _chains.Add(inputType, chain); call.AddClone(chain); } } }