### Question:
SyntheticRatesCurveCalibrator { public ImmutableRatesProvider calibrate( RatesCurveGroupDefinition group, RatesProvider inputProvider, ReferenceData refData) { MarketData marketQuotesSy = marketData(group, inputProvider, refData); return calibrator.calibrate(group, marketQuotesSy, refData); } private  SyntheticRatesCurveCalibrator(RatesCurveCalibrator calibrator, CalibrationMeasures marketQuotesMeasures); static SyntheticRatesCurveCalibrator standard(); static SyntheticRatesCurveCalibrator of(RatesCurveCalibrator calibrator, CalibrationMeasures marketQuotesMeasures); CalibrationMeasures getMeasures(); RatesCurveCalibrator getCalibrator(); ImmutableRatesProvider calibrate(
      RatesCurveGroupDefinition group,
      RatesProvider inputProvider,
      ReferenceData refData); ImmutableMarketData marketData(
      RatesCurveGroupDefinition group,
      RatesProvider inputProvider,
      ReferenceData refData); @Override String toString();  }### Answer:
@Test public void calibrate_xccy_curves_fx() { RatesProvider multicurveSyn = CALIBRATOR_SYNTHETIC.calibrate(GROUPS_SYN_USDEUR, MULTICURVE_INPUT_USDEUR_TSEMPTY, REF_DATA); double eurUsdInput = MULTICURVE_INPUT_USDEUR_TSEMPTY.fxRate(Currency.EUR, Currency.USD); double eurUsdSynthetic = multicurveSyn.fxRate(Currency.EUR, Currency.USD); assertThat(eurUsdInput).isCloseTo(eurUsdSynthetic, offset(TOLERANCE_MQ)); }