Like above, using *Devil's Advocate*, I can change the implementation to this without breaking any tests:

```C#
public IReflectionVisitor<T> Accept<T>(IReflectionVisitor<T> visitor)
{
    if (visitor == null) throw new ArgumentNullException("visitor");
    foreach (var e in this.elements)
        e.Accept(visitor);
    return visitor;
}
```