<divclass="platform-hinted "data-platform-hinted="data-platform-hinted"><divclass="content sourceset-dependent-content"data-active=""data-togglable=":micro_utils.dokka:dokkaHtml/commonMain"><divclass="symbol monospace"><spanclass="token keyword">open </span><spanclass="token keyword">suspend override </span><spanclass="token keyword">fun </span><ahref="perform-state-update.html"><spanclass="token function">performStateUpdate</span></a><spanclass="token punctuation">(</span><spanclass="parameters "><spanclass="parameter ">previousState<spanclass="token operator">: </span><ahref="../../dev.inmo.micro_utils.common/-optional/index.html">Optional</a><spanclass="token operator"><</span><spanclass="token keyword"></span><ahref="index.html">T</a><spanclass="token operator">></span><spanclass="token punctuation">, </span></span><spanclass="parameter ">actualState<spanclass="token operator">: </span><ahref="index.html">T</a><spanclass="token punctuation">, </span></span><spanclass="parameter ">scope<spanclass="token operator">: </span><spandata-unresolved-link="kotlinx.coroutines/CoroutineScope///PointingToDeclaration/">CoroutineScope</span></span></span><spanclass="token punctuation">)</span></div><pclass="paragraph">Realization of this update will use the <spandata-unresolved-link="kotlinx.coroutines/Job///PointingToDeclaration/">Job</span> of <ahref="perform-state-update.html">previousState</a> in <spandata-unresolved-link="dev.inmo.micro_utils.fsm.common/DefaultUpdatableStatesMachine/statesJobs/#/PointingToDeclaration/">statesJobs</span> and <spandata-unresolved-link="dev.inmo.micro_utils.fsm.common/DefaultUpdatableStatesMachine/jobsStates/#/PointingToDeclaration/">jobsStates</span> if <ahref="perform-state-update.html">previousState</a> is <ahref="../../dev.inmo.micro_utils.common/-optional/-companion/presented.html">Optional.presented</a> and <spandata-unresolved-link="dev.inmo.micro_utils.fsm.common/DefaultUpdatableStatesMachine/shouldReplaceJob/#dev.inmo.micro_utils.common.Optional[TypeParam(bounds=[dev.inmo.micro_utils.fsm.common.State])]#TypeParam(bounds=[dev.inmo.micro_utils.fsm.common.State])/PointingToDeclaration/">shouldReplaceJob</span> has returned true for <ahref="perform-state-update.html">previousState</a> and <ahref="perform-state-update.html">actualState</a>. In other words, <spandata-unresolved-link="kotlinx.coroutines/Job///PointingToDeclaration/">Job</span> of <ahref="perform-state-update.html">previousState</a> WILL NOT be replaced with the new one if they are "equal". Equality of states is solved in <spandata-unresolved-link="dev.inmo.micro_utils.fsm.common/DefaultUpdatableStatesMachine/shouldReplaceJob/#dev.inmo.micro_utils.common.Optional[TypeParam(bounds=[dev.inmo.micro_utils.fsm.common.State])]#TypeParam(bounds=[dev.inmo.micro_utils.fsm.common.State])/PointingToDeclaration/">shouldReplaceJob</span> and can be rewritten in subclasses</p></div></div>