With all these tests, I could use the *Devil's Advocate* technique and change the implementation to this:

```C#
public IReflectionVisitor<T> Accept<T>(IReflectionVisitor<T> visitor)
{
    if (visitor == null) throw new ArgumentNullException("visitor");
    visitor.Visit(this);
    return visitor;
}
```

All tests still pass. This is clearly wrong, indicating that either one or more tests are missing, or this particular test could be strengthened.