+ [Conditional ("FULL_AST")]
+ public void InsertLocation (object element, int index, Location location)
+ {
+ List<Location> found;
+ if (!simple_locs.TryGetValue (element, out found)) {
+ found = new List<Location> ();
+ simple_locs.Add (element, found);
+ }
+
+ found.Insert (index, location);
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AddStatement (object element, params Location[] locations)
+ {
+ if (locations.Length == 0)
+ throw new ArgumentException ("Statement is missing semicolon location");
+
+ AddLocation (element, locations);
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations)
+ {
+ member_locs.Add (member, new MemberLocations (modLocations));
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations, Location location)
+ {
+ member_locs.Add (member, new MemberLocations (modLocations, location));
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations, params Location[] locations)
+ {
+ member_locs.Add (member, new MemberLocations (modLocations, locations));
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AddMember (MemberCore member, IList<Tuple<Modifiers, Location>> modLocations, List<Location> locations)
+ {
+ member_locs.Add (member, new MemberLocations (modLocations, locations));
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AppendTo (object element, Location location)
+ {
+ List<Location> found;
+ if (!simple_locs.TryGetValue (element, out found)) {
+ found = new List<Location> ();
+ simple_locs.Add (element, found);
+ }
+
+ found.Add (location);
+ }
+
+ [Conditional ("FULL_AST")]
+ public void AppendToMember (MemberCore existing, params Location[] locations)
+ {
+ MemberLocations member;
+ if (member_locs.TryGetValue (existing, out member)) {
+ member.AddLocations (locations);
+ return;
+ }
+ }
+
+ public List<Location> GetLocations (object element)
+ {
+ List<Location> found;
+ simple_locs.TryGetValue (element, out found);
+ return found;
+ }
+
+ public MemberLocations GetMemberLocation (MemberCore element)