question: private ArrayList < BrdTracep > split_with_end_line ( int p_line_no , PlaLineInt p_new_end_line ) { ArrayList < BrdTracep > risul = new ArrayList < BrdTracep > ( 2 ) ; if ( ! is_on_the_board ( ) ) return risul ; if ( ! split_inside_drill_pad_allowed ( p_line_no , p_new_end_line ) ) return risul ; ArrayList < Polyline > split_polylines = polyline . split ( p_line_no , p_new_end_line ) ; if ( split_polylines . size ( ) < 2 ) return risul ; r_board . remove_item ( this ) ; BrdTracep a_trace = r_board . insert_trace_without_cleaning ( split_polylines . get ( 0 ) , get_layer ( ) , get_half_width ( ) , net_nos , clearance_idx ( ) , get_fixed_state ( ) ) ; if ( a_trace != null ) risul . add ( a_trace ) ; a_trace = r_board . insert_trace_without_cleaning ( split_polylines . get ( 1 ) , get_layer ( ) , get_half_width ( ) , net_nos , clearance_idx ( ) , get_fixed_state ( ) ) ; if ( a_trace != null ) risul . add ( a_trace ) ; return risul ; }
target:  Splits this trace at the line with number p_line_no into two  by inserting p_endline as concluding line of the first split piece and as the start line of the second split piece NOTE that this actually changes the items on the board !!!