@Override
    public Pipeline addAfter(HandlerInvoker invoker, String baseName, String name, Handler handler) {
        AbstractHandlerContext ctx = getContextOrDie(baseName);
        name = filterName(name, handler);
        addAfter0(ctx, new DefaultHandlerContext(this, invoker, name, handler));
        return this;
    }
Most of the code references the pipeline design of
<a href="https://github.com/netty/netty">Netty</a>.

@author jiachun.fjc
jraft-rheakv/rheakv-core/src/main/java/com/alipay/sofa/jraft/rhea/util/pipeline/DefaultPipeline.java