public static Dictionary<string, string> PreparePiggybag(this Dictionary<string, string> piggybag, TreeNode parentNode, EntityToken parentEntityToken)
{
var newPiggybag = new Dictionary<string, string>();
foreach (KeyValuePair<string, string> kvp in piggybag)
{
if (kvp.Key.StartsWith(ParentEntityTokenPiggybagString))
{
int generation = int.Parse(kvp.Key.Substring(ParentEntityTokenPiggybagString.Length));
generation += 1;
newPiggybag.Add(string.Format("{0}{1}", ParentEntityTokenPiggybagString, generation), kvp.Value);
}
else if (kvp.Key.StartsWith(ParentNodeIdPiggybagString))
{
int generation = int.Parse(kvp.Key.Substring(ParentNodeIdPiggybagString.Length));
generation += 1;
newPiggybag.Add(string.Format("{0}{1}", ParentNodeIdPiggybagString, generation), kvp.Value);
}
else
{
newPiggybag.Add(kvp.Key, kvp.Value);
}
}
newPiggybag.Add(string.Format("{0}1", ParentEntityTokenPiggybagString), EntityTokenSerializer.Serialize(parentEntityToken));
newPiggybag.Add(string.Format("{0}1", ParentNodeIdPiggybagString), parentNode.Id.ToString());
return newPiggybag;
}