func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) GetId() testutil.ID {
	return v.Id
}
GetId returns ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle.Id, 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 ComplexInlineFragmentsConflictingStuffArticle struct {
	Typename  string                                                               `json:"__typename"`
	Thumbnail ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail `json:"thumbnail"`
}
func (v *ComplexInlineFragmentsConflictingStuffArticle) GetTypename() string { return v.Typename }
func (v *ComplexInlineFragmentsConflictingStuffArticle) GetThumbnail() ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail {
	return v.Thumbnail
}
type ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail struct {
	Id           testutil.ID `json:"id"`
	ThumbnailUrl string      `json:"thumbnailUrl"`
}
func (v *ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail) GetId() testutil.ID {
	return v.Id
}
func (v *ComplexInlineFragmentsConflictingStuffArticleThumbnailStuffThumbnail) GetThumbnailUrl() string {
	return v.ThumbnailUrl
}
type ComplexInlineFragmentsConflictingStuffContent interface {
	implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent()
	GetTypename() string
}
func (v *ComplexInlineFragmentsConflictingStuffArticle) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() {
}
func (v *ComplexInlineFragmentsConflictingStuffVideo) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() {
}
func (v *ComplexInlineFragmentsConflictingStuffTopic) implementsGraphQLInterfaceComplexInlineFragmentsConflictingStuffContent() {
}
func __unmarshalComplexInlineFragmentsConflictingStuffContent(b []byte, v *ComplexInlineFragmentsConflictingStuffContent) 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(ComplexInlineFragmentsConflictingStuffArticle)
		return json.Unmarshal(b, *v)
	case "Video":
		*v = new(ComplexInlineFragmentsConflictingStuffVideo)
		return json.Unmarshal(b, *v)
	case "Topic":
		*v = new(ComplexInlineFragmentsConflictingStuffTopic)
		return json.Unmarshal(b, *v)
	case "":
		return fmt.Errorf(
			"Response was missing Content.__typename")
	default:
		return fmt.Errorf(
			`Unexpected concrete type for ComplexInlineFragmentsConflictingStuffContent: "%v"`, tn.TypeName)
	}
}
func __marshalComplexInlineFragmentsConflictingStuffContent(v *ComplexInlineFragmentsConflictingStuffContent) ([]byte, error) {
	var typename string
	switch v := (*v).(type) {
	case *ComplexInlineFragmentsConflictingStuffArticle:
		typename = "Article"
		result := struct {
			TypeName string `json:"__typename"`
			*ComplexInlineFragmentsConflictingStuffArticle
		}{typename, v}
		return json.Marshal(result)
	case *ComplexInlineFragmentsConflictingStuffVideo:
		typename = "Video"
		result := struct {
			TypeName string `json:"__typename"`
			*ComplexInlineFragmentsConflictingStuffVideo
		}{typename, v}
		return json.Marshal(result)
	case *ComplexInlineFragmentsConflictingStuffTopic:
		typename = "Topic"
		result := struct {
			TypeName string `json:"__typename"`
			*ComplexInlineFragmentsConflictingStuffTopic
		}{typename, v}
		return json.Marshal(result)
	case nil:
		return []byte("null"), nil
	default:
		return nil, fmt.Errorf(
			`Unexpected concrete type for ComplexInlineFragmentsConflictingStuffContent: "%T"`, v)
	}
}
type ComplexInlineFragmentsConflictingStuffTopic struct {
	Typename string `json:"__typename"`
}
func (v *ComplexInlineFragmentsConflictingStuffTopic) GetTypename() string { return v.Typename }
type ComplexInlineFragmentsConflictingStuffVideo struct {
	Typename  string                                               `json:"__typename"`
	Thumbnail ComplexInlineFragmentsConflictingStuffVideoThumbnail `json:"thumbnail"`
}
func (v *ComplexInlineFragmentsConflictingStuffVideo) GetTypename() string { return v.Typename }
func (v *ComplexInlineFragmentsConflictingStuffVideo) GetThumbnail() ComplexInlineFragmentsConflictingStuffVideoThumbnail {
	return v.Thumbnail
}
type ComplexInlineFragmentsConflictingStuffVideoThumbnail struct {
	Id           testutil.ID `json:"id"`
	TimestampSec int         `json:"timestampSec"`
}
func (v *ComplexInlineFragmentsConflictingStuffVideoThumbnail) GetId() testutil.ID { return v.Id }
func (v *ComplexInlineFragmentsConflictingStuffVideoThumbnail) GetTimestampSec() int {
	return v.TimestampSec
}
type ComplexInlineFragmentsNestedStuffArticle struct {
	Typename string `json:"__typename"`
}
func (v *ComplexInlineFragmentsNestedStuffArticle) GetTypename() string { return v.Typename }
type ComplexInlineFragmentsNestedStuffContent interface {
	implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent()
	GetTypename() string
}
func (v *ComplexInlineFragmentsNestedStuffArticle) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() {
}
func (v *ComplexInlineFragmentsNestedStuffVideo) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() {
}
func (v *ComplexInlineFragmentsNestedStuffTopic) implementsGraphQLInterfaceComplexInlineFragmentsNestedStuffContent() {
}
func __unmarshalComplexInlineFragmentsNestedStuffContent(b []byte, v *ComplexInlineFragmentsNestedStuffContent) 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(ComplexInlineFragmentsNestedStuffArticle)
		return json.Unmarshal(b, *v)
	case "Video":
		*v = new(ComplexInlineFragmentsNestedStuffVideo)
		return json.Unmarshal(b, *v)
	case "Topic":
		*v = new(ComplexInlineFragmentsNestedStuffTopic)
		return json.Unmarshal(b, *v)
	case "":
		return fmt.Errorf(
			"Response was missing Content.__typename")
	default:
		return fmt.Errorf(
			`Unexpected concrete type for ComplexInlineFragmentsNestedStuffContent: "%v"`, tn.TypeName)
	}
}
func __marshalComplexInlineFragmentsNestedStuffContent(v *ComplexInlineFragmentsNestedStuffContent) ([]byte, error) {
	var typename string
	switch v := (*v).(type) {
	case *ComplexInlineFragmentsNestedStuffArticle:
		typename = "Article"
		result := struct {
			TypeName string `json:"__typename"`
			*ComplexInlineFragmentsNestedStuffArticle
		}{typename, v}
		return json.Marshal(result)
	case *ComplexInlineFragmentsNestedStuffVideo:
		typename = "Video"
		result := struct {
			TypeName string `json:"__typename"`
			*ComplexInlineFragmentsNestedStuffVideo
		}{typename, v}
		return json.Marshal(result)
	case *ComplexInlineFragmentsNestedStuffTopic:
		typename = "Topic"
		premarshaled, err := v.__premarshalJSON()
		if err != nil {
			return nil, err
		}
		result := struct {
			TypeName string `json:"__typename"`
			*__premarshalComplexInlineFragmentsNestedStuffTopic
		}{typename, premarshaled}
		return json.Marshal(result)
	case nil:
		return []byte("null"), nil
	default:
		return nil, fmt.Errorf(
			`Unexpected concrete type for ComplexInlineFragmentsNestedStuffContent: "%T"`, v)
	}
}
type ComplexInlineFragmentsNestedStuffTopic struct {
	Typename string                                                  `json:"__typename"`
	Children []ComplexInlineFragmentsNestedStuffTopicChildrenContent `json:"-"`
}
func (v *ComplexInlineFragmentsNestedStuffTopic) GetTypename() string { return v.Typename }
func (v *ComplexInlineFragmentsNestedStuffTopic) GetChildren() []ComplexInlineFragmentsNestedStuffTopicChildrenContent {
	return v.Children
}
func (v *ComplexInlineFragmentsNestedStuffTopic) UnmarshalJSON(b []byte) error {
	if string(b) == "null" {
		return nil
	}
	var firstPass struct {
		*ComplexInlineFragmentsNestedStuffTopic
		Children []json.RawMessage `json:"children"`
		graphql.NoUnmarshalJSON
	}
	firstPass.ComplexInlineFragmentsNestedStuffTopic = v
	err := json.Unmarshal(b, &firstPass)
	if err != nil {
		return err
	}
	{
		dst := &v.Children
		src := firstPass.Children
		*dst = make(
			[]ComplexInlineFragmentsNestedStuffTopicChildrenContent,
			len(src))
		for i, src := range src {
			dst := &(*dst)[i]
			if len(src) != 0 && string(src) != "null" {
				err = __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenContent(
					src, dst)
				if err != nil {
					return fmt.Errorf(
						"Unable to unmarshal ComplexInlineFragmentsNestedStuffTopic.Children: %w", err)
				}
			}
		}
	}
	return nil
}
type __premarshalComplexInlineFragmentsNestedStuffTopic struct {
	Typename string `json:"__typename"`
	Children []json.RawMessage `json:"children"`
}
func (v *ComplexInlineFragmentsNestedStuffTopic) MarshalJSON() ([]byte, error) {
	premarshaled, err := v.__premarshalJSON()
	if err != nil {
		return nil, err
	}
	return json.Marshal(premarshaled)
}
func (v *ComplexInlineFragmentsNestedStuffTopic) __premarshalJSON() (*__premarshalComplexInlineFragmentsNestedStuffTopic, error) {
	var retval __premarshalComplexInlineFragmentsNestedStuffTopic
	retval.Typename = v.Typename
	{
		dst := &retval.Children
		src := v.Children
		*dst = make(
			[]json.RawMessage,
			len(src))
		for i, src := range src {
			dst := &(*dst)[i]
			var err error
			*dst, err = __marshalComplexInlineFragmentsNestedStuffTopicChildrenContent(
				&src)
			if err != nil {
				return nil, fmt.Errorf(
					"Unable to marshal ComplexInlineFragmentsNestedStuffTopic.Children: %w", err)
			}
		}
	}
	return &retval, nil
}
type ComplexInlineFragmentsNestedStuffTopicChildrenArticle struct {
	Typename string `json:"__typename"`
	Id     testutil.ID                                                      `json:"id"`
	Text   string                                                           `json:"text"`
	Parent ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic `json:"parent"`
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetTypename() string {
	return v.Typename
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetId() testutil.ID { return v.Id }
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetText() string { return v.Text }
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticle) GetParent() ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentTopic {
	return v.Parent
}
type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic struct {
	Children []ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent `json:"-"`
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) GetChildren() []ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent {
	return v.Children
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) UnmarshalJSON(b []byte) error {
	if string(b) == "null" {
		return nil
	}
	var firstPass struct {
		*ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic
		Children []json.RawMessage `json:"children"`
		graphql.NoUnmarshalJSON
	}
	firstPass.ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic = v
	err := json.Unmarshal(b, &firstPass)
	if err != nil {
		return err
	}
	{
		dst := &v.Children
		src := firstPass.Children
		*dst = make(
			[]ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent,
			len(src))
		for i, src := range src {
			dst := &(*dst)[i]
			if len(src) != 0 && string(src) != "null" {
				err = __unmarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent(
					src, dst)
				if err != nil {
					return fmt.Errorf(
						"Unable to unmarshal ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic.Children: %w", err)
				}
			}
		}
	}
	return nil
}
type __premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic struct {
	Children []json.RawMessage `json:"children"`
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) MarshalJSON() ([]byte, error) {
	premarshaled, err := v.__premarshalJSON()
	if err != nil {
		return nil, err
	}
	return json.Marshal(premarshaled)
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic) __premarshalJSON() (*__premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic, error) {
	var retval __premarshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic
	{
		dst := &retval.Children
		src := v.Children
		*dst = make(
			[]json.RawMessage,
			len(src))
		for i, src := range src {
			dst := &(*dst)[i]
			var err error
			*dst, err = __marshalComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenContent(
				&src)
			if err != nil {
				return nil, fmt.Errorf(
					"Unable to marshal ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopic.Children: %w", err)
			}
		}
	}
	return &retval, nil
}
type ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle struct {
	Typename string `json:"__typename"`
	Id   testutil.ID `json:"id"`
	Name string      `json:"name"`
}
func (v *ComplexInlineFragmentsNestedStuffTopicChildrenArticleParentContentParentTopicChildrenArticle) GetTypename() string {
	return v.Typename
}