public IFundingModel DeepClone(DateTime?newBuildDate = null) { var returnValue = new FundingModel(newBuildDate ?? BuildDate, Curves.Values.Select(c => c.Clone()).ToArray(), _currencyProvider, _calendarProvider) { VolSurfaces = VolSurfaces == null ? new Dictionary <string, IVolSurface>() : new Dictionary <string, IVolSurface>(VolSurfaces) }; if (FxMatrix != null) { returnValue.SetupFx(FxMatrix.Clone()); } return(returnValue); }