63 {
65 {
67 return;
68 }
71 {
73 }
75 {
76 ExtraJump.Position position =
jump2.GetDefaultPosition();
77 if (!(position
is ExtraJump.After { Target: var target }
after))
78 {
79 if (!(position
is ExtraJump.Before { Target: var target2 }
before))
80 {
82 }
84 {
85 throw new ArgumentException(
$"ExtraJump {jump2} did not refer to a vanilla ExtraJump in GetDefaultPosition()");
86 }
90 {
93 }
94 else
95 {
96 num2 = sortingSlots.Length - 1;
97 }
100 }
101 else
102 {
103 if (target !=
null && !(target
is VanillaExtraJump))
104 {
105 throw new ArgumentException(
$"ExtraJump {jump2} did not refer to a vanilla ExtraJump in GetDefaultPosition()");
106 }
110 {
113 }
114 else
115 {
117 }
120 }
121 }
124 {
126 foreach (ExtraJump jump
in new TopoSort<ExtraJump>(elements, (ExtraJump
j) => (
from a in j.GetModdedConstraints()?.OfType<ExtraJump.After>()
127 select a.Target).Where(elements.Contains) ??
Array.Empty<ExtraJump>(), (ExtraJump
j) => (
from b in j.GetModdedConstraints()?.OfType<ExtraJump.Before>()
128 select b.Target).Where(elements.Contains) ??
Array.Empty<ExtraJump>()).Sort())
129 {
131 }
133 {
135 }
136 }
138 }