private IMoBiCommand withUpdatedDefaultStateAndValueOrigin(IMoBiCommand executedCommand, IFormula formula, IBuildingBlock buildingBlock) { if (executedCommand.IsEmpty()) { return(executedCommand); } var parametersUsingFormula = _parameterInBuildingBlockRetriever.AllFrom(buildingBlock, p => Equals(p.Formula, formula)); if (!parametersUsingFormula.Any()) { return(executedCommand); } var updateValueOriginCommand = new MoBiMacroCommand(); parametersUsingFormula.Each(p => updateValueOriginCommand.Add(_quantityTask.UpdateDefaultStateAndValueOriginFor(p, buildingBlock))); //we have depending parameters but they all have default state and value origin set; if (updateValueOriginCommand.IsEmtpy) { return(executedCommand); } var macroCommand = new MoBiMacroCommand().WithHistoryEntriesFrom(executedCommand); macroCommand.Add(executedCommand); macroCommand.AddRange(updateValueOriginCommand.All()); return(macroCommand); }