public static bool Retrieve<T>(this object o, string info, out T data)
{
var property = o.GetType().GetProperty(info, ReflectionLibrary.INSTANCE_MEMBER_BINDING_FLAGS);
var valid = property != null && property.CanRead && typeof(T).IsAssignableFrom(property.PropertyType);
data = valid ? (T) property.GetValue(o) : default;
return valid;
}