docs: public static final long read(ReadableByteChannel channel, ByteBuffer[] dsts, int offset, int length) throws IOException
      {
          long res = 0;
          for  (int ii=0;ii<length;ii++)
          {
              ByteBuffer bb = dsts[ii+offset];
              if (bb.hasRemaining())
              {
                  int rc = channel.read(bb);
                  if (rc == -1)
                  {
                      if (res == 0)
                      {
                          return -1;
                      }
                      else
                      {
                          return res;
                      }
                  }
                  res += rc;
                  if (bb.hasRemaining())
                  {
                      break;
                  }
              }
          }
          return res;
      }