def property_value_pre_conversion(val, type_info)
      case type_info.flattened_tag
      when :ghash
        GLib::HashTable.from type_info.element_type, val
      when :glist
        GLib::List.from type_info.element_type, val
      when :strv
        GLib::Strv.from val
      when :byte_array
        GLib::ByteArray.from val
      when :callback
        GirFFI::Builder.build_class(type_info.interface).from val
      else
        val
      end
    end
def property_value_pre_conversion(val, type_info)
      case type_info.flattened_tag
      when :ghash
        GLib::HashTable.from type_info.element_type, val
      when :glist
        GLib::List.from type_info.element_type, val
      when :strv
        GLib::Strv.from val
      when :byte_array
        GLib::ByteArray.from val
      when :callback
        GirFFI::Builder.build_class(type_info.interface).from val
      else
        val
      end
    end
TODO: Move to ITypeInfo and unify with ArgHelper.cast_from_pointer