protected ByteBuffer data(int state) {
        Maps m = maps.get();
        if(_ok && m.isFinal(state)){
            int offset = m._state_tab.getInt(4*(state+255));
            int length;
            if(m.h_data_type()==1){
                length = m.h_fixed_data_size();
            }
            else{
                length = m._data.getInt(offset);
                offset += 4;
            }
            ByteBuffer meta = ByteBuffer.allocate(length);
            meta.order(ByteOrder.LITTLE_ENDIAN);
            byte[] dst = meta.array();
            for (int i = 0; i < length; ++i) {
                dst[i] = m._data.get(i + offset);
            }
            return meta;
        }
        return null;
    }
Retrieves data for the given state using the underlying fsa data buffer.
@param state The fsa state to retrieve data from.
@return A new buffer containing the data for the given state.
fsa/src/main/java/com/yahoo/fsa/FSA.java