/**
  * Creates a new instance registered with the given channel group, with the given underlying
  * {@link SocketChannel}. Used by an {@link AsyncServerSocketChannelImpl} when a new connection is
  * accepted.
  *
  * @param group the channel group
  * @param channel the {@link SocketChannel} for this async channel
  * @throws IOException if an I/O error occurs
  */
 AsyncSocketChannelImpl(AsyncGroupImpl group, SocketChannel channel) throws IOException {
   super(group.provider());
   this.channel = channel;
   key = group.register(channel);
 }
 /**
  * Creates a new instance registered with the given channel group.
  *
  * @param group the channel group
  * @throws IOException if an I/O error occurs
  */
 AsyncSocketChannelImpl(AsyncGroupImpl group) throws IOException {
   this(group, group.selectorProvider().openSocketChannel());
 }
 /**
  * Creates a new instance registered with the given channel group.
  *
  * @param group the channel group
  * @throws IOException if an I/O error occurs
  */
 AsyncServerSocketChannelImpl(AsyncGroupImpl group) throws IOException {
   super(group.provider());
   this.group = group;
   channel = group.selectorProvider().openServerSocketChannel();
   key = group.register(channel);
 }