public void Visit(object graph, IReadVisitor visitor)
        {
            var state = visitor.TryVisit(_args);

            if (state == ValueState.NotFound)
            {
                return;
            }

            if (state == ValueState.Null)
            {
                _property.Ref.SetValue(graph, null);
                visitor.Leave(_args);
                return;
            }

            var childGraph = Activator.CreateInstance(_property.Ref.PropertyType);

            _propertyType.Visit(childGraph, visitor);

            _property.Ref.SetValue(graph, childGraph);
            visitor.Leave(_args);
        }
 public void Travel(IWriteVisitor visitor, object graph)
 {
     _type.Visit(graph, visitor);
 }