code: func NewSimulator(addr net.UDPAddr) *Simulator {
  	s := &Simulator{
  		addr:     addr,
  		ids:      map[uint32]string{},
  		handlers: map[NetworkFunction]map[Command]Handler{},
  	}
  
  	// Built-in handlers for session management
  	s.handlers[NetworkFunctionApp] = map[Command]Handler{
  		CommandGetDeviceID:              s.deviceID,
  		CommandGetAuthCapabilities:      s.authCapabilities,
  		CommandGetSessionChallenge:      s.sessionChallenge,
  		CommandActivateSession:          s.sessionActivate,
  		CommandSetSessionPrivilegeLevel: s.sessionPrivilege,
  		CommandCloseSession:             s.sessionClose,
  		CommandGetUserName:              s.getUserName,
  		CommandSetUserName:              s.setUserName,
  	}
  
  	// Built-in handlers for chassis commands
  	s.handlers[NetworkFunctionChassis] = map[Command]Handler{
  		CommandChassisStatus:        s.chassisStatus,
  		CommandGetSystemBootOptions: s.getSystemBootOptions,
  		CommandSetSystemBootOptions: s.setSystemBootOptions,
  	}
  
  	return s
  }
docs: // NewSimulator constructs a Simulator with the given addr