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;
}

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 ; }
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 ! ! !
