private ValueSpecification getSpec(final ValueProperties props) {
   final Builder realProps = props.copy().with(ValuePropertyNames.FUNCTION, "SomeFunc");
   final ValueSpecification spec =
       new ValueSpecification(
           "X", ComputationTargetSpecification.of(Currency.USD), realProps.get());
   return spec;
 }
  @Override
  public Set<ValueSpecification> getResults(
      final FunctionCompilationContext context,
      final ComputationTarget target,
      final Map<ValueSpecification, ValueRequirement> inputs) {
    if (inputs.size() == 1) {
      ValueSpecification input = inputs.keySet().iterator().next();
      if (getValueRequirementName().equals(input.getValueName())) {
        return inputs.keySet();
      }
    }
    ValueSpecification superSpec = super.getResults(context, target, inputs).iterator().next();
    Builder properties =
        superSpec
            .getProperties()
            .copy()
            .withAny(s_priceShift)
            .withAny(s_volShift)
            .withAny(s_priceShiftType)
            .withAny(s_volShiftType);

    return Collections.singleton(
        new ValueSpecification(
            getValueRequirementName(), target.toSpecification(), properties.get()));
  }