Here are concrete suggestions for implementation of a solution:
WeaponAssembled => the return boolean determines whether the weapon is assembled or not
WeaponDisassembled => add reference to the weapon object (so I don't need to use cursorTarget workaround which is limited to human player and cannot work with AI soldier)
WeaponDisassembled => the return boolean determines whether the weapon is disassembled or not