public Patch CreatePatch()
{
int ctr = 0;
foreach (Hunk hunk in this)
{
if (!hunk.Same)
{
ctr += hunk.Right.Count;
}
}
object[] rightData = new object[ctr];
ArrayList hunks = new ArrayList();
ctr = 0;
foreach (Hunk hunk in this)
{
if (hunk.Same)
{
hunks.Add(new Patch.Hunk(rightData, hunk.Left.Start, hunk.Left.Count, 0, 0, true));
}
else
{
hunks.Add(new Patch.Hunk(rightData, hunk.Left.Start, hunk.Left.Count, ctr, hunk.Right.Count, false));
foreach (object t in hunk.Right)
{
rightData[ctr++] = t;
}
}
}
return new Patch((Patch.Hunk[]) hunks.ToArray(typeof(Patch.Hunk)));
}