
Hi Steve,
It doesn't work like that, so we don't do multiple hash lookups and equality comparisons for each rule.
We go through the tags and look each one up, based on an index consisting of the tag and value. So all rules that could be matched by say natural=mud are indexed by the string 'natural=mud'
So if an element has the tag natural=mud then we find the [0x51 ...] directly without looking at natural=marsh or natural=wetland or doing any other comparison.
Thank you for clarifying that. I have some more questions: 1. What if there are multiple actions for natural=mud? Which one(s) will be processed and in which order? 2. How and when are top-level AND expressions evaluated? 3. Why doesn't RuleFileReader.optimiseAndSaveBinaryOp() check for second.isType(EXISTS)? Why doesn't it attempt to swap operands when first.isType(NOT_EXISTS)? I committed a non-functional change to RuleFileReader, making optimiseAndSaveBinaryOp take a BinaryOp parameter. Marko