private void AddTransitions(int sourceState, bool areInitialTransitions, TransitionCollection transitions) { var transitionNo = transitions.CountValid(); var placeOfTransition = _markovChain.GetPlaceForNewTransitionChainElements(transitionNo); var index = 0L; foreach (var transition in transitions) { Assert.That(index < transitionNo, "Bug"); var probTransition = (LtmcTransition *)transition; CheckIfTransitionIsValid(probTransition); _markovChain._transitionMemory[placeOfTransition + index] = new TransitionElement { TargetState = transition->TargetStateIndex, Formulas = probTransition->Formulas, Probability = probTransition->Probability }; index++; } Assert.That(index == transitionNo, "Bug"); if (areInitialTransitions) { _markovChain._indexOfFirstInitialTransition = placeOfTransition; _markovChain._numberOfInitialTransitions = transitionNo; } else { _markovChain.SourceStates.Add(sourceState); _markovChain._stateStorageStateToFirstTransitionElementMemory[sourceState] = placeOfTransition; _markovChain._stateStorageStateTransitionNumberElementMemory[sourceState] = transitionNo; } }