@sc68cal What are we trying to achieve here? I'm not sure to understand the code completely.

From what I get, we're trying to create a new `Tree` by applying a change on top of another one? If this is what you're trying to achieve, there are **[low level APIs](https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp.Tests/ObjectDatabaseFixture.cs#L116-L245)** in LibGit2Sharp that can do just this.