public void Handle(TRequest request, bool shouldPropogate = false) { if (IsChainResponsible(request)) { RequestHandler(request); if (shouldPropogate && _nextChain != null) { _nextChain.Handle(request, true); } } else { if (_nextChain != null) { _nextChain.Handle(request, shouldPropogate); } } }