docs: @Override
      public long skip(final long n) throws IOException {
          if (n < 0) {
              throw new IllegalArgumentException("Negative skip length: " + n);
          }
  
          // skip in chunks of 512 bytes
          final byte[] b = new byte[512];
          long todo = n;
  
          while (todo > 0) {
              int len = (int) Math.min(b.length, todo);
              len = this.read(b, 0, len);
              if (len == EOF) {
                  break;
              }
              todo -= len;
          }
  
          return n - todo;
      }