static void HandleEquippedItem(Actor *actor, TESBoundObject *item, ExtraDataList *extraDataList, System.Byte leftHand)
            {
                if (item == null)
                {
                    return;
                }

                var player    = PlayerCharacter.Instance;
                var rightHand = leftHand == 0;

                if (actor == player)
                {
                    player->RemoveEquippedItemFlags((System.Byte)((rightHand ? 1 : 0) + 1));
                }

                var enchantment = item->GetEnchantment(extraDataList);

                if (enchantment == null)
                {
                    return;
                }

                var castingType = enchantment->GetCastingType();

                if (castingType == CastingType.ConstantEffect)
                {
                    return;
                }

                var actorValue = enchantment->GetCostActorValue(rightHand);

                if (actorValue != ActorValue.None)
                {
                    actor->RemoveActorValueModifiers(actorValue);

                    var maximumCharge = item->GetMaximumCharge(extraDataList);
                    actor->ActorValueOwner()->SetActorValue(actorValue, maximumCharge);

                    if (extraDataList != null && extraDataList->HasExtraData(ExtraDataType.Charge))
                    {
                        var charge = extraDataList->GetCharge();
                        actor->ActorValueOwner()->RestoreActorValue(ActorValueModifier.Damage, actorValue, -(maximumCharge - charge));
                    }
                }

                actor->RevertSelectedSpell((EquipType)(rightHand ? 1 : 0), enchantment);
            }
 System.Single GetCharge(ExtraDataList *extraDataList)
 {
     return(getCharge(extraDataList));
 }