func (v *SimpleNamedFragmentResponse) GetRandomItem() SimpleNamedFragmentRandomItemContent {
	return v.RandomItem
}
GetRandomItem returns SimpleNamedFragmentResponse.RandomItem, and is useful for accessing the field via an interface.
package test
import (
	"encoding/json"
	"fmt"
	"github.com/Khan/genqlient/graphql"
	"github.com/Khan/genqlient/internal/testutil"
)
type SimpleNamedFragmentRandomItemArticle struct {
	Typename string `json:"__typename"`
	Id   testutil.ID `json:"id"`
	Name string      `json:"name"`
}
func (v *SimpleNamedFragmentRandomItemArticle) GetTypename() string { return v.Typename }
func (v *SimpleNamedFragmentRandomItemArticle) GetId() testutil.ID { return v.Id }
func (v *SimpleNamedFragmentRandomItemArticle) GetName() string { return v.Name }
type SimpleNamedFragmentRandomItemContent interface {
	implementsGraphQLInterfaceSimpleNamedFragmentRandomItemContent()
	GetTypename() string
	GetId() testutil.ID
	GetName() string
}
func (v *SimpleNamedFragmentRandomItemArticle) implementsGraphQLInterfaceSimpleNamedFragmentRandomItemContent() {
}
func (v *SimpleNamedFragmentRandomItemVideo) implementsGraphQLInterfaceSimpleNamedFragmentRandomItemContent() {
}
func (v *SimpleNamedFragmentRandomItemTopic) implementsGraphQLInterfaceSimpleNamedFragmentRandomItemContent() {
}
func __unmarshalSimpleNamedFragmentRandomItemContent(b []byte, v *SimpleNamedFragmentRandomItemContent) error {
	if string(b) == "null" {
		return nil
	}
	var tn struct {
		TypeName string `json:"__typename"`
	}
	err := json.Unmarshal(b, &tn)
	if err != nil {
		return err
	}
	switch tn.TypeName {
	case "Article":
		*v = new(SimpleNamedFragmentRandomItemArticle)
		return json.Unmarshal(b, *v)
	case "Video":
		*v = new(SimpleNamedFragmentRandomItemVideo)
		return json.Unmarshal(b, *v)
	case "Topic":
		*v = new(SimpleNamedFragmentRandomItemTopic)
		return json.Unmarshal(b, *v)
	case "":
		return fmt.Errorf(
			"Response was missing Content.__typename")
	default:
		return fmt.Errorf(
			`Unexpected concrete type for SimpleNamedFragmentRandomItemContent: "%v"`, tn.TypeName)
	}
}
func __marshalSimpleNamedFragmentRandomItemContent(v *SimpleNamedFragmentRandomItemContent) ([]byte, error) {
	var typename string
	switch v := (*v).(type) {
	case *SimpleNamedFragmentRandomItemArticle:
		typename = "Article"
		result := struct {
			TypeName string `json:"__typename"`
			*SimpleNamedFragmentRandomItemArticle
		}{typename, v}
		return json.Marshal(result)
	case *SimpleNamedFragmentRandomItemVideo:
		typename = "Video"
		premarshaled, err := v.__premarshalJSON()
		if err != nil {
			return nil, err
		}
		result := struct {
			TypeName string `json:"__typename"`
			*__premarshalSimpleNamedFragmentRandomItemVideo
		}{typename, premarshaled}
		return json.Marshal(result)
	case *SimpleNamedFragmentRandomItemTopic:
		typename = "Topic"
		result := struct {
			TypeName string `json:"__typename"`
			*SimpleNamedFragmentRandomItemTopic
		}{typename, v}
		return json.Marshal(result)
	case nil:
		return []byte("null"), nil
	default:
		return nil, fmt.Errorf(
			`Unexpected concrete type for SimpleNamedFragmentRandomItemContent: "%T"`, v)
	}
}
type SimpleNamedFragmentRandomItemTopic struct {
	Typename string `json:"__typename"`
	Id   testutil.ID `json:"id"`
	Name string      `json:"name"`
}
func (v *SimpleNamedFragmentRandomItemTopic) GetTypename() string { return v.Typename }
func (v *SimpleNamedFragmentRandomItemTopic) GetId() testutil.ID { return v.Id }
func (v *SimpleNamedFragmentRandomItemTopic) GetName() string { return v.Name }
type SimpleNamedFragmentRandomItemVideo struct {
	Typename string `json:"__typename"`
	Id          testutil.ID `json:"id"`
	Name        string      `json:"name"`
	VideoFields `json:"-"`
}
func (v *SimpleNamedFragmentRandomItemVideo) GetTypename() string { return v.Typename }
func (v *SimpleNamedFragmentRandomItemVideo) GetId() testutil.ID { return v.Id }
func (v *SimpleNamedFragmentRandomItemVideo) GetName() string { return v.Name }
func (v *SimpleNamedFragmentRandomItemVideo) GetUrl() string { return v.VideoFields.Url }
func (v *SimpleNamedFragmentRandomItemVideo) GetDuration() int { return v.VideoFields.Duration }
func (v *SimpleNamedFragmentRandomItemVideo) GetThumbnail() VideoFieldsThumbnail {
	return v.VideoFields.Thumbnail
}
func (v *SimpleNamedFragmentRandomItemVideo) UnmarshalJSON(b []byte) error {
	if string(b) == "null" {
		return nil
	}
	var firstPass struct {
		*SimpleNamedFragmentRandomItemVideo
		graphql.NoUnmarshalJSON
	}
	firstPass.SimpleNamedFragmentRandomItemVideo = v
	err := json.Unmarshal(b, &firstPass)
	if err != nil {
		return err
	}
	err = json.Unmarshal(
		b, &v.VideoFields)
	if err != nil {
		return err
	}
	return nil
}
type __premarshalSimpleNamedFragmentRandomItemVideo struct {
	Typename string `json:"__typename"`
	Id testutil.ID `json:"id"`
	Name string `json:"name"`
	Url string `json:"url"`
	Duration int `json:"duration"`
	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
}
func (v *SimpleNamedFragmentRandomItemVideo) MarshalJSON() ([]byte, error) {
	premarshaled, err := v.__premarshalJSON()
	if err != nil {
		return nil, err
	}
	return json.Marshal(premarshaled)
}
func (v *SimpleNamedFragmentRandomItemVideo) __premarshalJSON() (*__premarshalSimpleNamedFragmentRandomItemVideo, error) {
	var retval __premarshalSimpleNamedFragmentRandomItemVideo
	retval.Typename = v.Typename
	retval.Id = v.Id
	retval.Name = v.Name
	retval.Url = v.VideoFields.Url
	retval.Duration = v.VideoFields.Duration
	retval.Thumbnail = v.VideoFields.Thumbnail
	return &retval, nil
}
type SimpleNamedFragmentRandomLeafArticle struct {
	Typename string `json:"__typename"`
}
func (v *SimpleNamedFragmentRandomLeafArticle) GetTypename() string { return v.Typename }
type SimpleNamedFragmentRandomLeafLeafContent interface {
	implementsGraphQLInterfaceSimpleNamedFragmentRandomLeafLeafContent()
	GetTypename() string
}
func (v *SimpleNamedFragmentRandomLeafArticle) implementsGraphQLInterfaceSimpleNamedFragmentRandomLeafLeafContent() {
}
func (v *SimpleNamedFragmentRandomLeafVideo) implementsGraphQLInterfaceSimpleNamedFragmentRandomLeafLeafContent() {
}
func __unmarshalSimpleNamedFragmentRandomLeafLeafContent(b []byte, v *SimpleNamedFragmentRandomLeafLeafContent) error {
	if string(b) == "null" {
		return nil
	}
	var tn struct {
		TypeName string `json:"__typename"`
	}
	err := json.Unmarshal(b, &tn)
	if err != nil {
		return err
	}
	switch tn.TypeName {
	case "Article":
		*v = new(SimpleNamedFragmentRandomLeafArticle)
		return json.Unmarshal(b, *v)
	case "Video":
		*v = new(SimpleNamedFragmentRandomLeafVideo)
		return json.Unmarshal(b, *v)
	case "":
		return fmt.Errorf(
			"Response was missing LeafContent.__typename")
	default:
		return fmt.Errorf(
			`Unexpected concrete type for SimpleNamedFragmentRandomLeafLeafContent: "%v"`, tn.TypeName)
	}
}
func __marshalSimpleNamedFragmentRandomLeafLeafContent(v *SimpleNamedFragmentRandomLeafLeafContent) ([]byte, error) {
	var typename string
	switch v := (*v).(type) {
	case *SimpleNamedFragmentRandomLeafArticle:
		typename = "Article"
		result := struct {
			TypeName string `json:"__typename"`
			*SimpleNamedFragmentRandomLeafArticle
		}{typename, v}
		return json.Marshal(result)
	case *SimpleNamedFragmentRandomLeafVideo:
		typename = "Video"
		premarshaled, err := v.__premarshalJSON()
		if err != nil {
			return nil, err
		}
		result := struct {
			TypeName string `json:"__typename"`
			*__premarshalSimpleNamedFragmentRandomLeafVideo
		}{typename, premarshaled}
		return json.Marshal(result)
	case nil:
		return []byte("null"), nil
	default:
		return nil, fmt.Errorf(
			`Unexpected concrete type for SimpleNamedFragmentRandomLeafLeafContent: "%T"`, v)
	}
}
type SimpleNamedFragmentRandomLeafVideo struct {
	Typename    string `json:"__typename"`
	VideoFields `json:"-"`
}
func (v *SimpleNamedFragmentRandomLeafVideo) GetTypename() string { return v.Typename }
func (v *SimpleNamedFragmentRandomLeafVideo) GetId() testutil.ID { return v.VideoFields.Id }
func (v *SimpleNamedFragmentRandomLeafVideo) GetName() string { return v.VideoFields.Name }
func (v *SimpleNamedFragmentRandomLeafVideo) GetUrl() string { return v.VideoFields.Url }
func (v *SimpleNamedFragmentRandomLeafVideo) GetDuration() int { return v.VideoFields.Duration }
func (v *SimpleNamedFragmentRandomLeafVideo) GetThumbnail() VideoFieldsThumbnail {
	return v.VideoFields.Thumbnail
}
func (v *SimpleNamedFragmentRandomLeafVideo) UnmarshalJSON(b []byte) error {
	if string(b) == "null" {
		return nil
	}
	var firstPass struct {
		*SimpleNamedFragmentRandomLeafVideo
		graphql.NoUnmarshalJSON
	}
	firstPass.SimpleNamedFragmentRandomLeafVideo = v
	err := json.Unmarshal(b, &firstPass)
	if err != nil {
		return err
	}
	err = json.Unmarshal(
		b, &v.VideoFields)
	if err != nil {
		return err
	}
	return nil
}
type __premarshalSimpleNamedFragmentRandomLeafVideo struct {
	Typename string `json:"__typename"`
	Id testutil.ID `json:"id"`
	Name string `json:"name"`
	Url string `json:"url"`
	Duration int `json:"duration"`
	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
}
func (v *SimpleNamedFragmentRandomLeafVideo) MarshalJSON() ([]byte, error) {
	premarshaled, err := v.__premarshalJSON()
	if err != nil {
		return nil, err
	}
	return json.Marshal(premarshaled)
}
func (v *SimpleNamedFragmentRandomLeafVideo) __premarshalJSON() (*__premarshalSimpleNamedFragmentRandomLeafVideo, error) {
	var retval __premarshalSimpleNamedFragmentRandomLeafVideo
	retval.Typename = v.Typename
	retval.Id = v.VideoFields.Id
	retval.Name = v.VideoFields.Name
	retval.Url = v.VideoFields.Url
	retval.Duration = v.VideoFields.Duration
	retval.Thumbnail = v.VideoFields.Thumbnail
	return &retval, nil
}
type SimpleNamedFragmentResponse struct {
	RandomItem SimpleNamedFragmentRandomItemContent     `json:"-"`
	RandomLeaf SimpleNamedFragmentRandomLeafLeafContent `json:"-"`
}