let rec normal_edges_until edgeend_id final_id tree = 
    match edgefilter tree (fun _ y -> let (_, id, _) = (y.edge) in edgeend_id ==id && y.edgeway == Normalwith
      x::[] -> let (c,i,p) = x.edge 
                in c.sourceid :: (if final_id != c.sourceid then (normal_edges_until c.sourceid final_id tree) else [])
    | [] -> let _ = report2 ("tsykli vigane lopp pole normal sisendit" ^ (NewName.to_string edgeend_id)) in []
    | _ -> let _ = report2 ("tsykli vigane lopp palju normal sisendeid" ^ (NewName.to_string edgeend_id)) in []