ChannelImpl implements Channel<V>, Channel.Context { @Override public Context context() { return this; } ChannelImpl(WebSocketChannel channel, WebSocketContextImpl webSocketContext, ChannelHandler<T, V> handler); @Override void send(V message); @Override void close(); @Override void join(String room); @Override void leave(String room); @Override Context context(); @Override Object get(String key); @Override void put(String key, Object value);  }
@Test void context() { var channel = new ChannelImpl<TestWebSocketMessage, TestWebSocketMessage>(null, null, null); channel.context().put("k1", "v1"); assertThat(channel.context().get("k1")).isEqualTo("v1"); channel.context().put("k1", null); assertThat(channel.context().get("k1")).isNull(); }