public static (double Value, double Minimum, double Maximum) GetParameterValueStateOrDefaults( this Arr <SimParameterSharedState> parameterSharedStates, string name, Arr <SimParameter> parameters ) { var parameterSharedState = parameterSharedStates.Find(pss => pss.Name == name); return(parameterSharedState.Match( pss => (pss.Value, pss.Minimum, pss.Maximum), () => { var parameter = parameters.GetParameter(name); var scalar = parameter.Scalar; return (scalar, scalar.GetPreviousOrderOfMagnitude(), scalar.GetNextOrderOfMagnitude()); })); }