code: void channelInputClosed(ChannelHandlerContext ctx, List<Object> out) throws Exception {
          if (cumulation != null) {
              callDecode(ctx, cumulation, out);
              decodeLast(ctx, cumulation, out);
          } else {
              decodeLast(ctx, Unpooled.EMPTY_BUFFER, out);
          }
      }
docs: Called when the input of the channel was closed which may be because it changed to inactive or because of
  {@link ChannelInputShutdownEvent}.