I think this TODO should actually stay, but you can re-word it. What I mean is that it's confusing and not extensible to say
  1+parameters.n_compositional_fields
and then to create the advection field in the next line differentiating between different values of n. We should either have something like
  for (...; n>introspection.n_advected_fields; ...)
    AdvectionField advf = introspection.nth_advected_field(n)

or even better be able to equip AdvectionField with some sort of ability to iterate.