let shift l ty i = 
    match l with 
      | Mloc l -> Mloc (M.shift l ty i)
      | PRef p -> Path (add_index p i ty)
      | ARef p -> ARef (add_index p i ty)
      | PRpar (p,0) | Path p ->
          let loc = Lookup.mloc_of_path p in
          Mloc (M.shift loc ty i)
      | PRpar  (p,n) -> PRpar (add_index p i ty,n)
      | ARpar (p,n) -> ARpar (add_index p i ty,n)