private void readIndexedHeader(int index) throws IOException {
            if (isStaticHeader(index)) {
                Header staticEntry = STATIC_HEADER_TABLE[index];
                mHeaders.add(staticEntry);
            } else {
                int dynamicTableIndex = dynamicTableIndex(index - STATIC_HEADER_TABLE.length);
                if (dynamicTableIndex < 0 || dynamicTableIndex >= mDynamicTable.length) {
                    throw new IOException("Hpack read headers failed: Header index too large " +
                            (index + 1));
                }
                Header header = mDynamicTable[dynamicTableIndex];
                if (header == null) {
                    throw new IOException("Hpack read headers failed: read dynamic table failed!");
                }
                mHeaders.add(header);
            }
        }
Read and write HPACK v10.

https://httpwg.org/specs/rfc7540.html#HeaderBlock

This implementation uses an array for the dynamic table and a list for indexed entries.  Dynamic
entries are added to the array, starting in the last position moving forward.  When the array
fills, it is doubled.

@author Megatron King
@since 2019/1/5 20:13
netbare-core/src/main/java/com/github/megatronking/netbare/http2/Hpack.java