public override IEnumerator Run(InstructionGraph graph, InstructionStore variables, int iteration) { if (Resolve(variables, List, out IVariableList variableList) && variableList is VariableList list) { if (SortByProperty) { list.Values.Sort((left, right) => { foreach (var condition in SortConditions) { var leftValue = condition.GetValue(left.Store); var rightValue = condition.GetValue(right.Store); var compare = VariableHandler.Compare(leftValue, rightValue).GetValueOrDefault(0); if (compare != 0) { return(compare); } } return(0); }); } else { list.Values.Sort((left, right) => VariableHandler.Compare(left, right).GetValueOrDefault(0)); } } graph.GoTo(Next, nameof(Next)); yield break; }