/// <summary>
 /// 
 /// </summary>
 /// <param name="oca"></param>
 /// <param name="segString"></param>
 /// <returns></returns>
 private SegmentString FindMatching(OrientedCoordinateArray oca, SegmentString segString)
 {
     return (SegmentString)ocaMap[oca];            
 }        
 /// <summary>
 /// 
 /// </summary>
 /// <param name="oca"></param>
 /// <param name="segString"></param>
 private void Add(OrientedCoordinateArray oca, SegmentString segString)
 {
     ocaMap.Add(oca, segString);
 }
 /// <summary>
 /// Dissolve the given <see cref="SegmentString" />.
 /// </summary>
 /// <param name="segString"></param>
 public void Dissolve(SegmentString segString)
 {
     OrientedCoordinateArray oca = new OrientedCoordinateArray(segString.Coordinates);
     SegmentString existing = FindMatching(oca, segString);
     if (existing == null)
         Add(oca, segString);            
     else
     {
         if (merger != null)
         {
             bool isSameOrientation = CoordinateArrays.Equals(existing.Coordinates, segString.Coordinates);
             merger.Merge(existing, segString, isSameOrientation);
         }
     }
 }