@Override
  public void init(final FunctionCompilationContext context) {
    _helper.init(context, this);

    final ComputationTargetSpecification currencySpec =
        new ComputationTargetSpecification(_helper.getYieldCurveKey().getCurrency());

    _marketDataResult =
        new ValueSpecification(
            ValueRequirementNames.YIELD_CURVE_MARKET_DATA,
            currencySpec,
            createValueProperties()
                .with(ValuePropertyNames.CURVE, _helper.getYieldCurveKey().getName())
                .get());
    _results = Sets.newHashSet(_marketDataResult);
  }
 @Override
 public CompiledFunctionDefinition compile(
     FunctionCompilationContext context, InstantProvider atInstant) {
   Triple<InstantProvider, InstantProvider, InterpolatedYieldCurveSpecification> compile =
       _helper.compile(context, atInstant);
   return new CompiledImpl(
       compile.getFirst(),
       compile.getSecond(),
       buildRequirements(compile.getThird(), context),
       _helper.getYieldCurveKey());
 }