code: public void append(final byte[] b, final int off, final int len) {
          if (b == null) {
              return;
          }
          if ((off < 0) || (off > b.length) || (len < 0) ||
                  ((off + len) < 0) || ((off + len) > b.length)) {
              throw new IndexOutOfBoundsException("off: "+off+" len: "+len+" b.length: "+b.length);
          }
          if (len == 0) {
              return;
          }
          final int newlen = this.len + len;
          if (newlen > this.array.length) {
              expand(newlen);
          }
          System.arraycopy(b, off, this.array, this.len, len);
          this.len = newlen;
      }
docs: Appends {@code len} bytes to this buffer from the given source
  array starting at index {@code off}. The capacity of the buffer
  is increased, if necessary, to accommodate all {@code len} bytes.
  
  @param   b        the bytes to be appended.
  @param   off      the index of the first byte to append.
  @param   len      the number of bytes to append.
  @throws IndexOutOfBoundsException if {@code off} if out of
  range, {@code len} is negative, or
  {@code off} + {@code len} is out of range.