Currently timeGradient's are always calculated.
And constraintMatches are always disabled in Solver's ScoreDirectory (unless assertion mode is on).
Not all algorithms need timeGradient (in fact only Simulated Annealing needs it currently).
Some unwritten algorithms need constraintMatches, most notably Guided Local Search.
When the Solver starts, it needs to be able to check which features needs to be enabled, by gathering feature Demand (or Request?) instances from it's algorithms. All features which aren't needed are disabled, for performance reasons.