public Object visit(PropertyName expression, Object notUsed) {
   // JD: use an expression to get at the attribute type intead of accessing directly
   if (parent != null && expression.evaluate(parent) == null) {
     throw new IllegalArgumentException(
         "Property '"
             + expression.getPropertyName()
             + "' could not be found in "
             + parent.getTypeName());
   }
   if (transactionAccessor != null) {
     Filter updateFilter =
         (Filter) transactionAccessor.getUpdateFilter(expression.getPropertyName());
     if (updateFilter != null) {
       changedStack.add(updateFilter);
       preStack.push(updateFilter);
     } else preStack.push(expression);
   } else {
     preStack.push(expression);
   }
   return null;
 }