//------------------------------------------------------------------------- public ImmutableRatesProvider generate(DoubleArray parameters, IDictionary <CurveName, JacobianCalibrationMatrix> jacobians, IDictionary <CurveName, DoubleArray> sensitivitiesMarketQuote) { // collect curves for child provider based on existing provider IDictionary <Currency, Curve> discountCurves = new Dictionary <Currency, Curve>(); IDictionary <Index, Curve> indexCurves = new Dictionary <Index, Curve>(); //JAVA TO C# CONVERTER TODO TASK: There is no .NET Dictionary equivalent to the Java 'putAll' method: discountCurves.putAll(knownProvider.DiscountCurves); //JAVA TO C# CONVERTER TODO TASK: There is no .NET Dictionary equivalent to the Java 'putAll' method: indexCurves.putAll(knownProvider.IndexCurves); // generate curves from combined parameter array int startIndex = 0; for (int i = 0; i < curveDefinitions.size(); i++) { CurveDefinition curveDefn = curveDefinitions.get(i); CurveMetadata metadata = curveMetadata.get(i); CurveName name = curveDefn.Name; // extract parameters for the child curve int paramCount = curveDefn.ParameterCount; DoubleArray curveParams = parameters.subArray(startIndex, startIndex + paramCount); startIndex += paramCount; // create the child curve CurveMetadata childMetadata = this.childMetadata(metadata, curveDefn, jacobians, sensitivitiesMarketQuote); Curve curve = curveDefn.curve(knownProvider.ValuationDate, childMetadata, curveParams); // put child curve into maps ISet <Currency> currencies = discountCurveNames.get(name); foreach (Currency currency in currencies) { discountCurves[currency] = curve; } ISet <Index> indices = forwardCurveNames.get(name); foreach (Index index in indices) { indexCurves[index] = curve; } } return(knownProvider.toBuilder().discountCurves(discountCurves).indexCurves(indexCurves).build()); }