private static void FillValues(IIndicatorValue value, ICollection <decimal?> values) { if (value == null) { throw new ArgumentNullException(nameof(value)); } if (value is DecimalIndicatorValue || value is CandleIndicatorValue || value is ShiftedIndicatorValue) { values.Add(value.IsEmpty ? (decimal?)null : value.GetValue <decimal>()); } else if (value is ComplexIndicatorValue) { var complexInd = (ComplexIndicatorValue)value; foreach (var innerIndicator in ((IComplexIndicator)value.Indicator).InnerIndicators) { var innerValue = complexInd.InnerValues.TryGetValue(innerIndicator); if (innerValue == null) { values.Add(null); } else { FillValues(innerValue, values); } } } else { throw new ArgumentOutOfRangeException(nameof(value), value.GetType(), LocalizedStrings.Str1655); } }