class BondFuturesOptionPremiumSecurityDefinition implements InstrumentDefinition<BondFuturesOptionPremiumSecurity> {

  @Override
  public BondFuturesOptionPremiumSecurity toDerivative(final ZonedDateTime date) {
    ArgumentChecker.isTrue(!date.isAfter(_expirationDate), "Date is after expiration date");
    final BondFuturesSecurity underlyingFuture = _underlyingFuture.toDerivative(date);
    final double expirationTime = TimeCalculator.getTimeBetween(date, _expirationDate);
    return new BondFuturesOptionPremiumSecurity(underlyingFuture, expirationTime, _strike, _isCall);
  }

  public  BondFuturesOptionPremiumSecurityDefinition(final BondFuturesSecurityDefinition underlyingFuture, 
      final ZonedDateTime expirationDate, final double strike, final boolean isCall);

}