We can pass that test by checking whether target type is matched with `ReflectedType` as below. This is more appropriate that the old implementation?

By the way, we may need to add more tests such as checking if the target type is an instance of ReflectedType.

```c#
public override IReflectionVisitor<IEnumerable<object>> Visit(
    PropertyInfoElement propertyInfoElement)
{
    if (propertyInfoElement == null) throw new ArgumentNullException("propertyInfoElement");

    if (propertyInfoElement.PropertyInfo.ReflectedType != this.target.GetType())
        return this;

    var value = propertyInfoElement.PropertyInfo.GetValue(this.target, null);
    return new ValueCollectingVisitor(
        this.target,
        this.values.Concat(new[] {value}).ToArray());
}
```