Similarly to the comment on `TreeChanges`, I believe the indexer should be case-sensitive.

If you run the following test:
```csharp
[Fact]
public void Blah()
{
    SelfCleaningDirectory scd = BuildSelfCleaningDirectory();

    using (Repository repo = Repository.Init(scd.DirectoryPath))
    {
        Blob mainContent = CreateBlob(repo, "awesome content\n");

        var tdOld = new TreeDefinition()
            .Add("A.TXT", mainContent, Mode.NonExecutableFile)
            .Add("a.txt", mainContent, Mode.NonExecutableFile);

        Tree treeOld = repo.ObjectDatabase.CreateTree(tdOld);

        var c = repo.ObjectDatabase.CreateCommit("blah", DummySignature, DummySignature, treeOld, new Commit[] {});

        repo.Refs.Add("refs/heads/master", c.Sha);

        Assert.Equal(c, repo.Head.Tip);
    }

    SetIgnoreCaseOrSkip(scd.DirectoryPath, true);

    using (var repo = new Repository(scd.DirectoryPath))
    {
        File.WriteAllText(Path.Combine(repo.Info.WorkingDirectory, "a.TxT"), "blah\n");

        // Set a breakpoint below then run "git status" in a bash console
        var status = repo.Index.RetrieveStatus();
    }
}
```

On my environment (Windows), git status allows me the following:
```bash
$ git status -s
D  A.TXT
D  a.txt
?? a.TxT

$ git status a.txt -s
D  a.txt

$ git status A.TXT -s
D  A.TXT

$ git status a.TxT -s
?? a.TxT

$ git status a.Txt -s

$
```