//workaround to http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3161935&SiteID=1
 private static void RemovePath(IDTSPathXX path, IDTSPathCollectionXX paths, bool AllowDeleteStartPoint)
 {
     if (!AllowDeleteStartPoint && path.StartPoint.DeleteOutputOnPathDetached)
     {
         System.Diagnostics.Debug.WriteLine("path going to delete output after detached!");
         path.StartPoint.DeleteOutputOnPathDetached = false;
     }
     bool bSuccess = false;
     try
     {
         paths.RemoveObjectByID(path.ID);
         bSuccess = true;
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine("Caught error during RemovePath: " + ex.Message);
         if (!ContainsID(paths, path.ID))
             bSuccess = true;
     }
     if (!bSuccess) throw new Exception("Could not remove path");
 }