Instead of this special case for the rare situation of such special turn restrictions I would add some more edges and model it appropriate (as part of a post-import process). This way the algorithms won’t need to know about this and in the future e.g. also CH and CH preparation won’t have a problem with this.
You can do the same for nodes but as the node IDs are kind of part of a public contract it is not good. E.g. iterating through all nodes is currently done via raw indices but e.g. iterating the edges is done via the AllEdgesIterator where we can skip certain (e.g. unused) edges
the direction changes
This can happen but as e.g. the FlagEncoder can (and should) take care of this when switching the flags you should be able to hook into this mechanism too.