The tool switching feature of grab your tools/simple sidearms seems broken, when you have a one handed weapon and a shield as a primary, and a ranged weapon as a sidearm. It throws the following error.
JobDriver threw exception in preInitActions[0] for pawn Snow driver=JobDriver_Train_OnSpot (toilIndex=3) driver.job=(Train (Job_3318120) A=Thing_Cow4322969)
System.NullReferenceException: Object reference not set to an instance of an object
at Verse.GenCollection.Any[T] (System.Collections.Generic.List1[T] list, System.Predicate
1[T] predicate) [0x00000] in :0
at CombatShields.Harmonypatches.PawnHasValidEquipped (Verse.Pawn pawn) [0x0003b] in :0
at CombatShields.Harmonypatches.ShieldPatchAddEquipment (Verse.Pawn_EquipmentTracker __instance, Verse.ThingWithComps newEq) [0x00034] in :0
at (wrapper dynamic-method) Verse.Pawn_EquipmentTracker.Verse.Pawn_EquipmentTracker.AddEquipment_Patch4(Verse.Pawn_EquipmentTracker,Verse.ThingWithComps)
at CM_Grab_Your_Tool.ToolMemoryTracker.TryEquipWeapon (Verse.Pawn pawn, Verse.ThingWithComps weapon, System.Boolean makeSound) [0x00089] in <4b085893263c4a5ebd890c2a9a7b23a2>:0
at CM_Grab_Your_Tool.ToolMemoryTracker.EquipAppropriateWeapon (Verse.Pawn pawn, RimWorld.SkillDef skill) [0x00071] in <4b085893263c4a5ebd890c2a9a7b23a2>:0
at CM_Grab_Your_Tool.ToilPatches+Toil_Constructor+<>c__DisplayClass0_0.b__0 () [0x00152] in <4b085893263c4a5ebd890c2a9a7b23a2>:0
at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00156] in :0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch4 (string)
(wrapper dynamic-method) Verse.AI.JobUtility:Verse.AI.JobUtility.TryStartErrorRecoverJob_Patch2 (Verse.Pawn,string,System.Exception,Verse.AI.JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil ()
(wrapper dynamic-method) Verse.AI.JobDriver:Verse.AI.JobDriver.ReadyForNextToil_Patch1 (Verse.AI.JobDriver)
RimWorld.Toils_Interpersonal/<>c__DisplayClass0_0:b__0 ()
Verse.AI.JobDriver:TryActuallyStartNextToil ()
(wrapper dynamic-method) Verse.AI.JobDriver:Verse.AI.JobDriver.ReadyForNextToil_Patch1 (Verse.AI.JobDriver)
RimWorld.Toils_Interpersonal/<>c__DisplayClass4_0:b__0 ()
Verse.AI.JobDriver:TryActuallyStartNextToil ()
(wrapper dynamic-method) Verse.AI.JobDriver:Verse.AI.JobDriver.ReadyForNextToil_Patch1 (Verse.AI.JobDriver)
Verse.AI.JobDriver:Notify_PatherArrived ()
Verse.AI.Pawn_PathFollower:PatherArrived ()
Verse.AI.Pawn_PathFollower:TryEnterNextPathCell ()
(wrapper dynamic-method) Verse.AI.Pawn_PathFollower:Verse.AI.Pawn_PathFollower.PatherTick_Patch3 (Verse.AI.Pawn_PathFollower)
(wrapper dynamic-method) Verse.Pawn:Verse.Pawn.Tick_Patch3 (Verse.Pawn)
DTimeControl.TCTickList:TickThing (Verse.Thing)
DTimeControl.TCTickList:DoTick (double,bool)
DTimeControl.TimeControlBase:TickManagerTick (Verse.TickManager,bool)
DTimeControl.Core_Patches.Patch_DoSingleTick_Prefix:Prefix (Verse.TickManager)
(wrapper dynamic-method) Verse.TickManager:Verse.TickManager.DoSingleTick_Patch5 (Verse.TickManager)
Verse.TickManager:TickManagerUpdate ()
(wrapper dynamic-method) Verse.Game:Verse.Game.UpdatePlay_Patch3 (Verse.Game)
Verse.Root_Play:Update ()
Dropping the shield fixes the issue, however when it's reequipped the issue returns.