code: static void addHandlerBeforeReactorEndHandlers(Connection context, String
  			name,	ChannelHandler handler) {
  		Objects.requireNonNull(name, "name");
  		Objects.requireNonNull(handler, "handler");
  
  		Channel channel = context.channel();
  		boolean exists = channel.pipeline().get(name) != null;
  
  		if (exists) {
  			if (log.isDebugEnabled()) {
  				log.debug(format(channel, "Handler [{}] already exists in the pipeline, decoder has been skipped"),
  						name);
  			}
  			return;
  		}
  
  		//we need to find the correct position
  		String before = null;
  		for (String s : channel.pipeline().names()) {
  			if (s.startsWith(NettyPipeline.RIGHT)) {
  				before = s;
  				break;
  			}
  		}
  
  		if (before == null) {
  			channel.pipeline().addLast(name, handler);
  		}
  		else {
  			channel.pipeline().addBefore(NettyPipeline.ReactiveBridge, name, handler);
  		}
  
  		registerForClose(context.isPersistent(),  name, context);
  
  		if (log.isDebugEnabled()) {
  			log.debug(format(channel, "Added decoder [{}] at the end of the user pipeline, full pipeline: {}"),
  					name,
  					channel.pipeline().names());
  		}
  	}
docs: A common implementation for the {@link Connection#addHandlerLast(String, ChannelHandler)}
  method that can be reused by other implementors.
  <p>
  This implementation will look for reactor added handlers on the right hand side of
  the pipeline, provided they are identified with the {@link NettyPipeline#RIGHT}
  prefix, and add the handler just before the first of these.
  
  @param context the {@link Connection} on which to add the decoder.
  @param name the name of the decoder.
  @param handler the decoder to add before the final reactor-specific handlers.
  @see Connection#addHandlerLast(String, ChannelHandler).