It takes too long time to see what you mean.
```c#
public class ValueCollectingVisitor : ReflectionVisitor<IEnumerable<object>>
{
    ...
    private IEnumerable<object> values;
    ...
    public override IReflectionVisitor<IEnumerable<object>> Visit(
        PropertyInfoElement propertyInfoElement)
    {
        this.values = values.Concat(GetLazyValue(propertyInfoElement));
        return this;
    }

    private IEnumerable<object> GetLazyValue(PropertyInfoElement propertyInfoElement)
    {
        yield return propertyInfoElement.PropertyInfo.GetValue(this.target, null);
    }
    ...
}
```