These `r.Branch` calls aren't that self-explanatory, at least to me. What's the significance of 1, 6, 2, and 5? Using parameter labels would help. It'd be even more :gem: if they could piggy-back on the `r.Changeset` calls. It will help the test's clarity if the script can approximately match what a person would do in TFS in the order (i.e. I create a changeset with changes, or I create a branch). Can the script infer more? Maybe changeset 4 could be

```
r.Changeset(4, "create branch", DateTime.Parse(...))
    .Branch(TfsItemType.Folder, from: "$/MyProject/Main", to: "$/MyProject/Branch")
    .Branch(TfsItemType.File, from: "$/MyProject/Main/File.txt", to: "$/MyProject/Branch/File.txt", "File contents");
```

and changeset 6 could be

```
r.Changeset(6, "merge in main", ...)
    .Merge(TfsItemType.File, to: "$/MyProject/Main/File.txt", from: "$/MyProject/Branch/File.txt", content: "Merge resolution contents");
```