public int EmitNodsIndex; // where in m_nodEmits to start looking public DynamicOrder OrderAgainst(object other) { var ot = (ItemInfo)other; var aOrder = Item.ScheduleAgainst(ot.Item); var bOrder = ot.Item.ScheduleAgainst(Item); aOrder = ScheduleOrderUtil.ResolveOrder(aOrder, bOrder, out var conflict); if (conflict) { CoreException.Throw("Bad dynamic order"); } if (aOrder == ScheduleOrder.RunBefore) { return(DynamicOrder.RequireABeforeB); } if (aOrder == ScheduleOrder.RunAfter) { return(DynamicOrder.RequireBBeforeA); } // ok, soft order by hint var diff = (int)Item.Hint - (int)ot.Item.Hint; if (diff > 0) { return(DynamicOrder.PreferBBeforeA); } if (diff < 0) { return(DynamicOrder.PreferABeforeB); } return(DynamicOrder.AnyOrder); }