Since the results should probably be in the same order as in the input list (and not the reverse order), this is basically a `MapInd` and an `Unzip`.
Define the `Unzip` helper as:
```
% Unzips a list of X#Y into the list of Xs and the list of Ys
proc {Unzip XYs ?Xs ?Ys}
   case XYs
   of nil then
      Xs = nil
      Ys = nil
   [] (X#Y)|XYr then Xr Yr in
      Xs = X|Xr
      Ys = Y|Yr
      {Unzip XYr ?Xr ?Yr}
   end
end
```
then you can write this function as:
```
proc {CreateNextsForLastLevel Fields ?NextsRecord ?NextsVar}
   {Unzip {List.mapInd Fields fun {$ I Field}
       Var = {MakeVarIndex 'Next' I+1}
    in
       fColon(Field Var) # Var
    end ?NextsRecord ?NextsVar}
end
```
(to test! I have written it without any compiler support)