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; }