See here: https://discuss.graphhopper.com/t/bug-turn-restrictions-with-multiple-…via-way-not-work/9446
The error is reproduced by the following test in RestrictionSetterTest.java:
```Java
@Test
void overlappingRestrictions_bug() {
// 6
// |
// 7-5
// | |
// 0-1-2-3-4
int e01 = edge(0, 1, false);
int e12 = edge(1, 2, false);
int e23 = edge(2, 3, false);
int e34 = edge(3, 4, false);
int e45 = edge(4, 5, false);
int e56 = edge(5, 6, false);
int e57 = edge(5, 7, false);
int e73 = edge(7, 3, false);
assertPath(3, 7, nodes(3, 4, 5, 7));
assertPath(0, 6, nodes(0, 1, 2, 3, 4, 5, 6));
setRestrictions(
createViaEdgeRestriction(e23, e34, e45, e56),
// todo: for some reason the u-turn restriction is ignored
createViaEdgeRestriction(e34, e45, e57)
);
assertPath(0, 6, null);
assertPath(3, 7, null);
}
@Test
void overlappingRestrictions_bug_full() {
int e1 = edge(13, 47, true);
int e2 = edge(48, 35, true);
int e3 = edge(49, 8, false);
int e4 = edge(8, 2, false);
int e11 = edge(38, 15, false);
int e12 = edge(37, 4, false);
int e13 = edge(4, 41, false);
int e14 = edge(41, 2, false);
int e15 = edge(50, 5, false);
int e16 = edge(5, 1, false);
int e17 = edge(7, 12, false);
int e18 = edge(12, 40, false);
int e19 = edge(40, 46, false);
int e20 = edge(46, 37, false);
int e21 = edge(11, 9, true);
int e22 = edge(51, 42, false);
int e23 = edge(42, 11, false);
int e24 = edge(11, 10, false);
int e25 = edge(10, 52, false);
int e26 = edge(9, 33, true);
int e27 = edge(33, 12, true);
int e28 = edge(13, 34, true);
int e29 = edge(34, 10, true);
int e30 = edge(2, 53, false);
int e31 = edge(54, 3, false);
int e32 = edge(3, 0, false);
int e33 = edge(16, 18, false);
int e34 = edge(18, 15, false);
int e69 = edge(16, 14, false);
int e70 = edge(14, 43, false);
int e71 = edge(43, 38, false);
int e72 = edge(0, 44, false);
int e73 = edge(44, 36, false);
int e74 = edge(36, 35, false);
int e75 = edge(1, 45, false);
int e76 = edge(45, 39, false);
int e77 = edge(39, 7, false);
int e78 = edge(0, 38, false);
int e79 = edge(1, 37, false);
int e80 = edge(38, 1, false);
int e81 = edge(37, 0, false);
int e82 = edge(15, 6, false);
int e83 = edge(6, 65, false);
int e84 = edge(41, 42, true);
int e85 = edge(35, 16, false);
int e86 = edge(43, 44, false);
int e87 = edge(46, 45, false);
setRestrictions(
createViaEdgeRestriction(e71, e80, e79, e12),
createViaEdgeRestriction(e20, e81, e78, e11, e82),
createViaNodeRestriction(e77, 7, e17),
// todo: for some reason both these turn restrictions are ignored
createViaEdgeRestriction(e80, e79, e81),
createViaEdgeRestriction(e81, e78, e80)
);
assertPath(16, 4, null);
}
```
Possibly related: https://discuss.graphhopper.com/t/u-turn-occurring-despite-no-u-turn/9599/4