public void testConditional() {
   Ability source = create(Ability.class, "Source");
   context.ref.reassociateCategory(AbilityCategory.FEAT, source);
   ParseResult result =
       token.parseToken(context, source, "CLASS|Wizard=2|Fireball|PREVARLTEQ:3,MyCasterLevel");
   if (result != ParseResult.SUCCESS) {
     result.printMessages();
     fail("Test Setup Failed");
   }
   finishLoad();
   assertEquals(baseCount(), targetFacetCount());
   CategorizedAbilitySelection cas =
       new CategorizedAbilitySelection(AbilityCategory.FEAT, source, Nature.AUTOMATIC);
   directAbilityFacet.add(id, cas);
   assertFalse(containsExpected());
   PCTemplate varsource = create(PCTemplate.class, "VarSource");
   varsource.put(VariableKey.getConstant("MyCasterLevel"), FormulaFactory.getFormulaFor(4.0));
   Selection<PCTemplate, ?> sel = new Selection<PCTemplate, Object>(varsource, null);
   templateFacet.add(id, sel, this);
   // pc.setDirty(true);
   assertTrue(containsExpected());
   assertEquals(baseCount() + 1, targetFacetCount());
   directAbilityFacet.remove(id, cas);
   pc.setDirty(true);
   assertEquals(baseCount(), targetFacetCount());
 }
 @Override
 public void processToken(CDOMObject source) {
   ParseResult result = token.parseToken(context, source, "CLASS|Wizard=2|Fireball");
   if (result != ParseResult.SUCCESS) {
     result.printMessages();
     fail("Test Setup Failed");
   }
   finishLoad();
 }