### Question:
EtdContractSpec implements Attributes, ImmutableBean, Serializable { public EtdFutureSecurity createFuture(YearMonth expiryMonth, EtdVariant variant) { return EtdFutureSecurity.of(this, expiryMonth, variant); } EtdContractSpec(
      EtdContractSpecId id,
      EtdType type,
      ExchangeId exchangeId,
      EtdContractCode contractCode,
      String description,
      SecurityPriceInfo priceInfo,
      Map<AttributeType<?>, Object> attributes); static EtdContractSpecBuilder builder(); @Override ImmutableSet<AttributeType<?>> getAttributeTypes(); @Override Optional<T> findAttribute(AttributeType<T> type); @Override EtdContractSpec withAttribute(AttributeType<T> type, T value); @Override EtdContractSpec withAttributes(Attributes other); EtdFutureSecurity createFuture(YearMonth expiryMonth, EtdVariant variant); EtdOptionSecurity createOption(
      YearMonth expiryMonth,
      EtdVariant variant,
      int version,
      PutCall putCall,
      double strikePrice); EtdOptionSecurity createOption(
      YearMonth expiryMonth,
      EtdVariant variant,
      int version,
      PutCall putCall,
      double strikePrice,
      YearMonth underlyingExpiryMonth); static EtdContractSpec.Meta meta(); @Override EtdContractSpec.Meta metaBean(); EtdContractSpecId getId(); EtdType getType(); ExchangeId getExchangeId(); EtdContractCode getContractCode(); String getDescription(); SecurityPriceInfo getPriceInfo(); ImmutableMap<AttributeType<?>, Object> getAttributes(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void createFutureFromOptionContractSpec() { assertThatExceptionOfType(IllegalStateException.class) .isThrownBy(() -> OPTION_CONTRACT.createFuture(YearMonth.of(2015, 6), EtdVariant.MONTHLY)) .withMessage("Cannot create an EtdFutureSecurity from a contract specification of type 'Option'"); }