I'm debugging mng-2861 and I see some issues we need to consider for 3.0. This particular issue works like this:
a->b->d[1.2,) a->c->e[2.0,3.0] d1.2 is relocated to e1.2 During the processing of this, we select d1.2 and then transform this to e1.2. (this bug happens to be that we don't reselect the valid versions and later on the range is correctly merged to [2.0,3.0] but the available versions still show 1.0,1.1,1.2...and we get an NPE) The issue is that even though I can fix this issue now, it still won't fully handle the relocated ranges right. If we had selected d 1.1, we would not have processed the relocation and thus our range isn't actually complete. Further, if I add the ranges together, we don't keep around the old information so if the original artifact got selected, the range would still not match. So what basically has to happen in 2.0.x is that once we hit the relocation, the range gets shifted to what is available in the new relocated group...but this needs to be fixed in m-a-3 We need to have the range be 1.0,1.1,1.2,2.0,3.0 but we need to know the artifact for each to fully process the range. If someone puts a range on d[1.0,3.0) we would currently stop at 1.2 because that's the last d, but really e2.0 and e3.0 should be considered the same. It seems to me that we need to process all the relocations and normalize an artifact across the spectrum BEFORE we start selecting versions from those ranges. This would need to happen across the graph in case there are conflicts somewhere else.