I've been running two parallel debugging sessions - the ant task that was invoking ivy:buildnumber was in first session executed directly and in another one it was executed as dependency of some other task (somewhere down the line of dependency graph) - few other ivy tasks, like ivy:publish have been executed before
so in both sessions ivy:buildnumber has been fed with exactly the same attributes
session invoking the ivy:buildnumber "directly" got the exact matcher while the one invoking it indirectly got the regexp one
on both occasions expression was equal to organisation string-wise; in second session it wasn't equal address-wise though
clearly the comparison in the matcher is broken (unless you're purposely comparing address values and I'm missing something here)
after replacing == with .equals & rebuilding ivy, this task started working properly
what's the reason for comparing references (ref) ant not values (*ref) ?