public bool TryGet(string name, out ValueWithType value)
 {
     Property property;
     if (!properties.TryGetValue(name, out property))
     {
         value = default (ValueWithType);
         return false;
     }
     value = new ValueWithType
     {
         type = property.type,
         value = property.getter(obj)
     };
     used.Add(name);
     return true;
 }
            public bool TryGet(string name, out ValueWithType value)
            {
                Property property;

                if (!properties.TryGetValue(name, out property))
                {
                    value = default(ValueWithType);
                    return(false);
                }
                value = new ValueWithType
                {
                    type  = property.type,
                    value = property.getter(obj)
                };
                used.Add(name);
                return(true);
            }