code: @Nonnegative
    public static long channelCopy (@Nonnull @WillNotClose final ReadableByteChannel aSrc,
                                    @Nonnull @WillNotClose final WritableByteChannel aDest) throws IOException
    {
      ValueEnforcer.notNull (aSrc, "SourceChannel");
      ValueEnforcer.isTrue (aSrc.isOpen (), "SourceChannel is not open!");
      ValueEnforcer.notNull (aDest, "DestinationChannel");
      ValueEnforcer.isTrue (aDest.isOpen (), "DestinationChannel is not open!");
  
      long nBytesWritten;
      if (USE_COPY_V1)
        nBytesWritten = _channelCopy1 (aSrc, aDest);
      else
        nBytesWritten = _channelCopy2 (aSrc, aDest);
      return nBytesWritten;
    }
docs: Copy all content from the source channel to the destination channel.
  
  @param aSrc
  Source channel. May not be <code>null</code>. Is not closed after
  the operation.
  @param aDest
  Destination channel. May not be <code>null</code>. Is not closed
  after the operation.
  @return The number of bytes written.
  @throws IOException
  In case of IO error