'Child of' Constraint, setting Inverse doesn't work?
The problem is double parent transformations:


first from parent
second from child_of_constraint


The solution and how to cleanly set this up is:


do not give the Mag any parent, all parenting will be done with constraints
position the Mag so it is both in the gun and in the hand
set 1st child_of_constraint to the gun and Set inverse
set 2nd child_of_constraint to the thumb and Set inverse
switch parenting with key-framing both constraint influences, gun_parent will go from 1 to 0 and hand_parent vice-versa.