code: func ReadOffsetTable(bs ByteSlice, off uint64, f func([]string, uint64) error) error {
  	d := encoding.NewDecbufAt(bs, int(off), castagnoliTable)
  	cnt := d.Be32()
  
  	for d.Err() == nil && d.Len() > 0 && cnt > 0 {
  		keyCount := d.Uvarint()
  		keys := make([]string, 0, keyCount)
  
  		for i := 0; i < keyCount; i++ {
  			keys = append(keys, d.UvarintStr())
  		}
  		o := d.Uvarint64()
  		if d.Err() != nil {
  			break
  		}
  		if err := f(keys, o); err != nil {
  			return err
  		}
  		cnt--
  	}
  	return d.Err()
  }
docs: // ReadOffsetTable reads an offset table and at the given position calls f for each
  // found entry. If f returns an error it stops decoding and returns the received error.