if ( curr_corner.is_NaN()) return null;
<BUG>PlaPointFloat next_corner = p_line_arr[p_no + 1].intersection_approx(p_line_arr[p_no + 2]);
</BUG>
if ( next_corner.is_NaN()) return null;
<BUG>PlaDirection prev_dir = p_line_arr[p_no].direction();

PlaDirection next_dir = p_line_arr[p_no + 1].direction();
</BUG>
PlaDirection new_line_dir = prev_dir.add(next_dir);
PlaLineInt translate_line = new PlaLineInt(curr_corner.round(), new_line_dir);

if ( curr_corner.is_NaN()) return null;
PlaPointFloat next_corner = p_line_arr.get(p_no + 1).intersection_approx(p_line_arr.get(p_no + 2));
if ( next_corner.is_NaN()) return null;
PlaDirection prev_dir = p_line_arr.get(p_no).direction();
PlaDirection next_dir = p_line_arr.get(p_no + 1).direction();
PlaDirection new_line_dir = prev_dir.add(next_dir);
PlaLineInt translate_line = new PlaLineInt(curr_corner.round(), new_line_dir);
