Having said that, the user may well set the current value of the override in the dictionary to a collection type which does not preserve order and then all bets are off.

I think this needs more thought. I don't think we should expose the collection which holds the line processors to the user, we should encapsulate that collection and manage the underlying storage type ourselves. Whilst `List<T>` is ordered, I don't think the current change will offer a discoverable and intuitive API. I think we should expose the line processors as an appropriate interface, e.g. IList<T> so that the user can manipulate it with the usual common collection methods, i.e. Add, Clear, indexing etc.