}
@Override
public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
final Position position = target.getPosition();
final Security security = position.getSecurity();
List<UnderlyingType> underlyings;
Underlying order;
final Set<ValueRequirement> requirements = new HashSet<ValueRequirement>();
final String underlyingGreekRequirementName = AvailableValueGreeks.getGreekRequirementNameForValueGreekName(getRequirementName());
requirements.add(new ValueRequirement(underlyingGreekRequirementName, ComputationTargetType.SECURITY, security.getUniqueId(), getInputConstraint(desiredValue)));
order = AvailableGreeks.getGreekForValueRequirementName(underlyingGreekRequirementName).getUnderlying();
if (order == null) {
throw new UnsupportedOperationException("No available order for configured value greek " + getRequirementName());
}
underlyings = order.getUnderlyings();