void from_variant( const fc::variant& var, graphene::chain::extension<T>& value, uint32_t max_depth ) { value = graphene::chain::extension<T>(); if( var.is_null() ) return; if( var.is_array() ) { FC_ASSERT( var.size() == 0 ); return; } graphene_extension_from_variant_visitor<T> vtor( var.get_object(), value.value, max_depth ); fc::reflector<T>::visit( vtor ); FC_ASSERT( vtor.count_left == 0 ); // unrecognized extension throws here }