is_collinear for the first endpoint of L is now unified and is always equal to FALSE.
Add tests of is_collinear. It is tested by passing 4th and 5th char in the expected turn string (= means collinear, + means non-collinear), e.g. "mxi=+" for L/L means that L1 ends in this IP and was collinear before meeting the Point, L2 is going "inside" intersection and wasn't collinear before.
Replace method_and_operation_replacer with turn_transformer.
Some asserts are invalid when 'x' operation can be somewhere in the middle (boundary_checker).
boundary_checker::is_boundary() function removed since it's not used anywhere.
Errors in get_turns are related to the handling of touches turn. t,i/i must be handled and is_collinear must be set in operations for spikes.
2 Turns are generated for a spike, one with operation_blocked the second one with operation_intersection.
relate_linear_linear is not working yet, for now it is only ensured that boundaries will not be checked for those turns, which would result with assert failure.
TODO: opposite collinear and equal, touches c/c and endpoints intersecting a spike + the adaptation of relate(L,L).
Change the ignoring check calculation in get_turn_info_for_endpoint.
Add additional parameters to the second version of collinear_opposite<>::apply() defining if the pk and/or qk are valid (in other words current segment is NOT the last one).
Also make ignoring check for last endpoint in L/A more clear.
In this case no sections were generated for those "empty" Linestrings but if there were some sections already generated they could be marked as last_non_duplicated.