### Question:
SecurityTokenEvaluator extends TokenEvaluator<Security> { @Override public Set<String> tokens(Security security) { MetaBean metaBean = MetaBean.of(security.getClass()); return Sets.union( Sets.union(metaBean.metaPropertyMap().keySet(), security.getInfo().propertyNames()), security.getInfo().getPriceInfo().propertyNames()); }  @Override Class<Security> getTargetType(); @Override Set<String> tokens(Security security); @Override EvaluationResult evaluate(
      Security security,
      CalculationFunctions functions,
      String firstToken,
      List<String> remainingTokens);  }### Answer:
@Test public void tokens() { SecurityTokenEvaluator evaluator = new SecurityTokenEvaluator(); Set<String> tokens = evaluator.tokens(security()); Set<String> expected = ImmutableSet.of( "id", "info", "currency", "priceInfo", "contractSize", "tickSize", "tickValue", "attributes"); assertThat(tokens).isEqualTo(expected); }