### Question:
TradeTokenEvaluator extends TokenEvaluator<Trade> { @Override public Set<String> tokens(Trade trade) { MetaBean metaBean = MetaBean.of(trade.getClass()); return Sets.union(metaBean.metaPropertyMap().keySet(), trade.getInfo().propertyNames()); }  @Override Class<Trade> getTargetType(); @Override Set<String> tokens(Trade trade); @Override EvaluationResult evaluate(
      Trade trade,
      CalculationFunctions functions,
      String firstToken,
      List<String> remainingTokens);  }### Answer:
@Test public void tokens() { TradeTokenEvaluator evaluator = new TradeTokenEvaluator(); Set<String> tokens = evaluator.tokens(trade()); Set<String> expected = ImmutableSet.of( "quantity", "price", "security", "id", "counterparty", "tradeDate", "tradeTime", "zone", "settlementDate", "attributes", "info"); assertThat(tokens).isEqualTo(expected); }