code: func (p *GtidLogEventParser) Parse(raw *RawV4Event) (Event, error) {
  	gle := &GtidLogEvent{
  		Event: raw,
  	}
  
  	if len(raw.VariableLengthData()) > 0 {
  		return raw, errors.New("GTID binlog event larger than expected size")
  	}
  
  	data := raw.FixedLengthData()
  
  	var commitData uint8
  	data, err := readLittleEndian(data, &commitData)
  	if err != nil {
  		return raw, errors.Wrap(err, "Failed to read commit flag")
  	}
  	if commitData == 0 {
  		gle.commit = false
  	} else if commitData == 1 {
  		gle.commit = true
  	} else {
  		return raw, errors.Newf("Commit data is not 0 or 1: %d", commitData)
  	}
  
  	data, err = readLittleEndian(data, &gle.sid)
  	if err != nil {
  		return raw, errors.Wrap(err, "Failed to read sid")
  	}
  
  	data, err = readLittleEndian(data, &gle.gno)
  	if err != nil {
  		return raw, errors.Wrap(err, "Failed to read GNO")
  	}
  
  	return gle, nil
  }
docs: // GtidLogEventParser's Parse processes a raw gtid log event into a GtidLogEvent.