code: func (p *Parser) onCDemoFullPacket(m *dota.CDemoFullPacket) error {
  	// Per Valve docs, parse the CDemoStringTables first.
  	if m.StringTable != nil {
  		if err := p.onCDemoStringTables(m.GetStringTable()); err != nil {
  			return err
  		}
  	}
  
  	// Then the CDemoPacket.
  	if m.Packet != nil {
  		if err := p.onCDemoPacket(m.GetPacket()); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // Internal parser for callback OnCDemoFullPacket.