github.com/opiuman/genqlient@v1.0.0/generate/testdata/snapshots/TestGenerate-ComplexNamedFragments.graphql-ComplexNamedFragments.graphql.go (about)

     1  // Code generated by github.com/opiuman/genqlient, DO NOT EDIT.
     2  
     3  package test
     4  
     5  import (
     6  	"encoding/json"
     7  	"fmt"
     8  
     9  	"github.com/opiuman/genqlient/graphql"
    10  	"github.com/opiuman/genqlient/internal/testutil"
    11  )
    12  
    13  // ComplexNamedFragmentsResponse is returned by ComplexNamedFragments on success.
    14  type ComplexNamedFragmentsResponse struct {
    15  	QueryFragment `json:"-"`
    16  }
    17  
    18  // GetRandomItem returns ComplexNamedFragmentsResponse.RandomItem, and is useful for accessing the field via an interface.
    19  func (v *ComplexNamedFragmentsResponse) GetRandomItem() InnerQueryFragmentRandomItemContent {
    20  	return v.QueryFragment.InnerQueryFragment.RandomItem
    21  }
    22  
    23  // GetRandomLeaf returns ComplexNamedFragmentsResponse.RandomLeaf, and is useful for accessing the field via an interface.
    24  func (v *ComplexNamedFragmentsResponse) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
    25  	return v.QueryFragment.InnerQueryFragment.RandomLeaf
    26  }
    27  
    28  // GetOtherLeaf returns ComplexNamedFragmentsResponse.OtherLeaf, and is useful for accessing the field via an interface.
    29  func (v *ComplexNamedFragmentsResponse) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
    30  	return v.QueryFragment.InnerQueryFragment.OtherLeaf
    31  }
    32  
    33  func (v *ComplexNamedFragmentsResponse) UnmarshalJSON(b []byte) error {
    34  
    35  	if string(b) == "null" {
    36  		return nil
    37  	}
    38  
    39  	var firstPass struct {
    40  		*ComplexNamedFragmentsResponse
    41  		graphql.NoUnmarshalJSON
    42  	}
    43  	firstPass.ComplexNamedFragmentsResponse = v
    44  
    45  	err := json.Unmarshal(b, &firstPass)
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	err = json.Unmarshal(
    51  		b, &v.QueryFragment)
    52  	if err != nil {
    53  		return err
    54  	}
    55  	return nil
    56  }
    57  
    58  type __premarshalComplexNamedFragmentsResponse struct {
    59  	RandomItem json.RawMessage `json:"randomItem"`
    60  
    61  	RandomLeaf json.RawMessage `json:"randomLeaf"`
    62  
    63  	OtherLeaf json.RawMessage `json:"otherLeaf"`
    64  }
    65  
    66  func (v *ComplexNamedFragmentsResponse) MarshalJSON() ([]byte, error) {
    67  	premarshaled, err := v.__premarshalJSON()
    68  	if err != nil {
    69  		return nil, err
    70  	}
    71  	return json.Marshal(premarshaled)
    72  }
    73  
    74  func (v *ComplexNamedFragmentsResponse) __premarshalJSON() (*__premarshalComplexNamedFragmentsResponse, error) {
    75  	var retval __premarshalComplexNamedFragmentsResponse
    76  
    77  	{
    78  
    79  		dst := &retval.RandomItem
    80  		src := v.QueryFragment.InnerQueryFragment.RandomItem
    81  		var err error
    82  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
    83  			&src)
    84  		if err != nil {
    85  			return nil, fmt.Errorf(
    86  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomItem: %w", err)
    87  		}
    88  	}
    89  	{
    90  
    91  		dst := &retval.RandomLeaf
    92  		src := v.QueryFragment.InnerQueryFragment.RandomLeaf
    93  		var err error
    94  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
    95  			&src)
    96  		if err != nil {
    97  			return nil, fmt.Errorf(
    98  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
    99  		}
   100  	}
   101  	{
   102  
   103  		dst := &retval.OtherLeaf
   104  		src := v.QueryFragment.InnerQueryFragment.OtherLeaf
   105  		var err error
   106  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
   107  			&src)
   108  		if err != nil {
   109  			return nil, fmt.Errorf(
   110  				"Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
   111  		}
   112  	}
   113  	return &retval, nil
   114  }
   115  
   116  // ContentFields includes the GraphQL fields of Content requested by the fragment ContentFields.
   117  // The GraphQL type's documentation follows.
   118  //
   119  // Content is implemented by various types like Article, Video, and Topic.
   120  //
   121  // ContentFields is implemented by the following types:
   122  // ContentFieldsArticle
   123  // ContentFieldsVideo
   124  // ContentFieldsTopic
   125  type ContentFields interface {
   126  	implementsGraphQLInterfaceContentFields()
   127  	// GetName returns the interface-field "name" from its implementation.
   128  	GetName() string
   129  	// GetUrl returns the interface-field "url" from its implementation.
   130  	GetUrl() string
   131  }
   132  
   133  func (v *ContentFieldsArticle) implementsGraphQLInterfaceContentFields() {}
   134  func (v *ContentFieldsVideo) implementsGraphQLInterfaceContentFields()   {}
   135  func (v *ContentFieldsTopic) implementsGraphQLInterfaceContentFields()   {}
   136  
   137  func __unmarshalContentFields(b []byte, v *ContentFields) error {
   138  	if string(b) == "null" {
   139  		return nil
   140  	}
   141  
   142  	var tn struct {
   143  		TypeName string `json:"__typename"`
   144  	}
   145  	err := json.Unmarshal(b, &tn)
   146  	if err != nil {
   147  		return err
   148  	}
   149  
   150  	switch tn.TypeName {
   151  	case "Article":
   152  		*v = new(ContentFieldsArticle)
   153  		return json.Unmarshal(b, *v)
   154  	case "Video":
   155  		*v = new(ContentFieldsVideo)
   156  		return json.Unmarshal(b, *v)
   157  	case "Topic":
   158  		*v = new(ContentFieldsTopic)
   159  		return json.Unmarshal(b, *v)
   160  	case "":
   161  		return fmt.Errorf(
   162  			"response was missing Content.__typename")
   163  	default:
   164  		return fmt.Errorf(
   165  			`unexpected concrete type for ContentFields: "%v"`, tn.TypeName)
   166  	}
   167  }
   168  
   169  func __marshalContentFields(v *ContentFields) ([]byte, error) {
   170  
   171  	var typename string
   172  	switch v := (*v).(type) {
   173  	case *ContentFieldsArticle:
   174  		typename = "Article"
   175  
   176  		result := struct {
   177  			TypeName string `json:"__typename"`
   178  			*ContentFieldsArticle
   179  		}{typename, v}
   180  		return json.Marshal(result)
   181  	case *ContentFieldsVideo:
   182  		typename = "Video"
   183  
   184  		result := struct {
   185  			TypeName string `json:"__typename"`
   186  			*ContentFieldsVideo
   187  		}{typename, v}
   188  		return json.Marshal(result)
   189  	case *ContentFieldsTopic:
   190  		typename = "Topic"
   191  
   192  		result := struct {
   193  			TypeName string `json:"__typename"`
   194  			*ContentFieldsTopic
   195  		}{typename, v}
   196  		return json.Marshal(result)
   197  	case nil:
   198  		return []byte("null"), nil
   199  	default:
   200  		return nil, fmt.Errorf(
   201  			`unexpected concrete type for ContentFields: "%T"`, v)
   202  	}
   203  }
   204  
   205  // ContentFields includes the GraphQL fields of Article requested by the fragment ContentFields.
   206  // The GraphQL type's documentation follows.
   207  //
   208  // Content is implemented by various types like Article, Video, and Topic.
   209  type ContentFieldsArticle struct {
   210  	Name string `json:"name"`
   211  	Url  string `json:"url"`
   212  }
   213  
   214  // GetName returns ContentFieldsArticle.Name, and is useful for accessing the field via an interface.
   215  func (v *ContentFieldsArticle) GetName() string { return v.Name }
   216  
   217  // GetUrl returns ContentFieldsArticle.Url, and is useful for accessing the field via an interface.
   218  func (v *ContentFieldsArticle) GetUrl() string { return v.Url }
   219  
   220  // ContentFields includes the GraphQL fields of Topic requested by the fragment ContentFields.
   221  // The GraphQL type's documentation follows.
   222  //
   223  // Content is implemented by various types like Article, Video, and Topic.
   224  type ContentFieldsTopic struct {
   225  	Name string `json:"name"`
   226  	Url  string `json:"url"`
   227  }
   228  
   229  // GetName returns ContentFieldsTopic.Name, and is useful for accessing the field via an interface.
   230  func (v *ContentFieldsTopic) GetName() string { return v.Name }
   231  
   232  // GetUrl returns ContentFieldsTopic.Url, and is useful for accessing the field via an interface.
   233  func (v *ContentFieldsTopic) GetUrl() string { return v.Url }
   234  
   235  // ContentFields includes the GraphQL fields of Video requested by the fragment ContentFields.
   236  // The GraphQL type's documentation follows.
   237  //
   238  // Content is implemented by various types like Article, Video, and Topic.
   239  type ContentFieldsVideo struct {
   240  	Name string `json:"name"`
   241  	Url  string `json:"url"`
   242  }
   243  
   244  // GetName returns ContentFieldsVideo.Name, and is useful for accessing the field via an interface.
   245  func (v *ContentFieldsVideo) GetName() string { return v.Name }
   246  
   247  // GetUrl returns ContentFieldsVideo.Url, and is useful for accessing the field via an interface.
   248  func (v *ContentFieldsVideo) GetUrl() string { return v.Url }
   249  
   250  // InnerQueryFragment includes the GraphQL fields of Query requested by the fragment InnerQueryFragment.
   251  // The GraphQL type's documentation follows.
   252  //
   253  // Query's description is probably ignored by almost all callers.
   254  type InnerQueryFragment struct {
   255  	RandomItem InnerQueryFragmentRandomItemContent     `json:"-"`
   256  	RandomLeaf InnerQueryFragmentRandomLeafLeafContent `json:"-"`
   257  	OtherLeaf  InnerQueryFragmentOtherLeafLeafContent  `json:"-"`
   258  }
   259  
   260  // GetRandomItem returns InnerQueryFragment.RandomItem, and is useful for accessing the field via an interface.
   261  func (v *InnerQueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent { return v.RandomItem }
   262  
   263  // GetRandomLeaf returns InnerQueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
   264  func (v *InnerQueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
   265  	return v.RandomLeaf
   266  }
   267  
   268  // GetOtherLeaf returns InnerQueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
   269  func (v *InnerQueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
   270  	return v.OtherLeaf
   271  }
   272  
   273  func (v *InnerQueryFragment) UnmarshalJSON(b []byte) error {
   274  
   275  	if string(b) == "null" {
   276  		return nil
   277  	}
   278  
   279  	var firstPass struct {
   280  		*InnerQueryFragment
   281  		RandomItem json.RawMessage `json:"randomItem"`
   282  		RandomLeaf json.RawMessage `json:"randomLeaf"`
   283  		OtherLeaf  json.RawMessage `json:"otherLeaf"`
   284  		graphql.NoUnmarshalJSON
   285  	}
   286  	firstPass.InnerQueryFragment = v
   287  
   288  	err := json.Unmarshal(b, &firstPass)
   289  	if err != nil {
   290  		return err
   291  	}
   292  
   293  	{
   294  		dst := &v.RandomItem
   295  		src := firstPass.RandomItem
   296  		if len(src) != 0 && string(src) != "null" {
   297  			err = __unmarshalInnerQueryFragmentRandomItemContent(
   298  				src, dst)
   299  			if err != nil {
   300  				return fmt.Errorf(
   301  					"Unable to unmarshal InnerQueryFragment.RandomItem: %w", err)
   302  			}
   303  		}
   304  	}
   305  
   306  	{
   307  		dst := &v.RandomLeaf
   308  		src := firstPass.RandomLeaf
   309  		if len(src) != 0 && string(src) != "null" {
   310  			err = __unmarshalInnerQueryFragmentRandomLeafLeafContent(
   311  				src, dst)
   312  			if err != nil {
   313  				return fmt.Errorf(
   314  					"Unable to unmarshal InnerQueryFragment.RandomLeaf: %w", err)
   315  			}
   316  		}
   317  	}
   318  
   319  	{
   320  		dst := &v.OtherLeaf
   321  		src := firstPass.OtherLeaf
   322  		if len(src) != 0 && string(src) != "null" {
   323  			err = __unmarshalInnerQueryFragmentOtherLeafLeafContent(
   324  				src, dst)
   325  			if err != nil {
   326  				return fmt.Errorf(
   327  					"Unable to unmarshal InnerQueryFragment.OtherLeaf: %w", err)
   328  			}
   329  		}
   330  	}
   331  	return nil
   332  }
   333  
   334  type __premarshalInnerQueryFragment struct {
   335  	RandomItem json.RawMessage `json:"randomItem"`
   336  
   337  	RandomLeaf json.RawMessage `json:"randomLeaf"`
   338  
   339  	OtherLeaf json.RawMessage `json:"otherLeaf"`
   340  }
   341  
   342  func (v *InnerQueryFragment) MarshalJSON() ([]byte, error) {
   343  	premarshaled, err := v.__premarshalJSON()
   344  	if err != nil {
   345  		return nil, err
   346  	}
   347  	return json.Marshal(premarshaled)
   348  }
   349  
   350  func (v *InnerQueryFragment) __premarshalJSON() (*__premarshalInnerQueryFragment, error) {
   351  	var retval __premarshalInnerQueryFragment
   352  
   353  	{
   354  
   355  		dst := &retval.RandomItem
   356  		src := v.RandomItem
   357  		var err error
   358  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
   359  			&src)
   360  		if err != nil {
   361  			return nil, fmt.Errorf(
   362  				"Unable to marshal InnerQueryFragment.RandomItem: %w", err)
   363  		}
   364  	}
   365  	{
   366  
   367  		dst := &retval.RandomLeaf
   368  		src := v.RandomLeaf
   369  		var err error
   370  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
   371  			&src)
   372  		if err != nil {
   373  			return nil, fmt.Errorf(
   374  				"Unable to marshal InnerQueryFragment.RandomLeaf: %w", err)
   375  		}
   376  	}
   377  	{
   378  
   379  		dst := &retval.OtherLeaf
   380  		src := v.OtherLeaf
   381  		var err error
   382  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
   383  			&src)
   384  		if err != nil {
   385  			return nil, fmt.Errorf(
   386  				"Unable to marshal InnerQueryFragment.OtherLeaf: %w", err)
   387  		}
   388  	}
   389  	return &retval, nil
   390  }
   391  
   392  // InnerQueryFragmentOtherLeafArticle includes the requested fields of the GraphQL type Article.
   393  type InnerQueryFragmentOtherLeafArticle struct {
   394  	Typename             string `json:"__typename"`
   395  	ContentFieldsArticle `json:"-"`
   396  }
   397  
   398  // GetTypename returns InnerQueryFragmentOtherLeafArticle.Typename, and is useful for accessing the field via an interface.
   399  func (v *InnerQueryFragmentOtherLeafArticle) GetTypename() string { return v.Typename }
   400  
   401  // GetName returns InnerQueryFragmentOtherLeafArticle.Name, and is useful for accessing the field via an interface.
   402  func (v *InnerQueryFragmentOtherLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
   403  
   404  // GetUrl returns InnerQueryFragmentOtherLeafArticle.Url, and is useful for accessing the field via an interface.
   405  func (v *InnerQueryFragmentOtherLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
   406  
   407  func (v *InnerQueryFragmentOtherLeafArticle) UnmarshalJSON(b []byte) error {
   408  
   409  	if string(b) == "null" {
   410  		return nil
   411  	}
   412  
   413  	var firstPass struct {
   414  		*InnerQueryFragmentOtherLeafArticle
   415  		graphql.NoUnmarshalJSON
   416  	}
   417  	firstPass.InnerQueryFragmentOtherLeafArticle = v
   418  
   419  	err := json.Unmarshal(b, &firstPass)
   420  	if err != nil {
   421  		return err
   422  	}
   423  
   424  	err = json.Unmarshal(
   425  		b, &v.ContentFieldsArticle)
   426  	if err != nil {
   427  		return err
   428  	}
   429  	return nil
   430  }
   431  
   432  type __premarshalInnerQueryFragmentOtherLeafArticle struct {
   433  	Typename string `json:"__typename"`
   434  
   435  	Name string `json:"name"`
   436  
   437  	Url string `json:"url"`
   438  }
   439  
   440  func (v *InnerQueryFragmentOtherLeafArticle) MarshalJSON() ([]byte, error) {
   441  	premarshaled, err := v.__premarshalJSON()
   442  	if err != nil {
   443  		return nil, err
   444  	}
   445  	return json.Marshal(premarshaled)
   446  }
   447  
   448  func (v *InnerQueryFragmentOtherLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafArticle, error) {
   449  	var retval __premarshalInnerQueryFragmentOtherLeafArticle
   450  
   451  	retval.Typename = v.Typename
   452  	retval.Name = v.ContentFieldsArticle.Name
   453  	retval.Url = v.ContentFieldsArticle.Url
   454  	return &retval, nil
   455  }
   456  
   457  // InnerQueryFragmentOtherLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
   458  //
   459  // InnerQueryFragmentOtherLeafLeafContent is implemented by the following types:
   460  // InnerQueryFragmentOtherLeafArticle
   461  // InnerQueryFragmentOtherLeafVideo
   462  // The GraphQL type's documentation follows.
   463  //
   464  // LeafContent represents content items that can't have child-nodes.
   465  type InnerQueryFragmentOtherLeafLeafContent interface {
   466  	implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent()
   467  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   468  	GetTypename() string
   469  }
   470  
   471  func (v *InnerQueryFragmentOtherLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
   472  }
   473  func (v *InnerQueryFragmentOtherLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() {
   474  }
   475  
   476  func __unmarshalInnerQueryFragmentOtherLeafLeafContent(b []byte, v *InnerQueryFragmentOtherLeafLeafContent) error {
   477  	if string(b) == "null" {
   478  		return nil
   479  	}
   480  
   481  	var tn struct {
   482  		TypeName string `json:"__typename"`
   483  	}
   484  	err := json.Unmarshal(b, &tn)
   485  	if err != nil {
   486  		return err
   487  	}
   488  
   489  	switch tn.TypeName {
   490  	case "Article":
   491  		*v = new(InnerQueryFragmentOtherLeafArticle)
   492  		return json.Unmarshal(b, *v)
   493  	case "Video":
   494  		*v = new(InnerQueryFragmentOtherLeafVideo)
   495  		return json.Unmarshal(b, *v)
   496  	case "":
   497  		return fmt.Errorf(
   498  			"response was missing LeafContent.__typename")
   499  	default:
   500  		return fmt.Errorf(
   501  			`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%v"`, tn.TypeName)
   502  	}
   503  }
   504  
   505  func __marshalInnerQueryFragmentOtherLeafLeafContent(v *InnerQueryFragmentOtherLeafLeafContent) ([]byte, error) {
   506  
   507  	var typename string
   508  	switch v := (*v).(type) {
   509  	case *InnerQueryFragmentOtherLeafArticle:
   510  		typename = "Article"
   511  
   512  		premarshaled, err := v.__premarshalJSON()
   513  		if err != nil {
   514  			return nil, err
   515  		}
   516  		result := struct {
   517  			TypeName string `json:"__typename"`
   518  			*__premarshalInnerQueryFragmentOtherLeafArticle
   519  		}{typename, premarshaled}
   520  		return json.Marshal(result)
   521  	case *InnerQueryFragmentOtherLeafVideo:
   522  		typename = "Video"
   523  
   524  		premarshaled, err := v.__premarshalJSON()
   525  		if err != nil {
   526  			return nil, err
   527  		}
   528  		result := struct {
   529  			TypeName string `json:"__typename"`
   530  			*__premarshalInnerQueryFragmentOtherLeafVideo
   531  		}{typename, premarshaled}
   532  		return json.Marshal(result)
   533  	case nil:
   534  		return []byte("null"), nil
   535  	default:
   536  		return nil, fmt.Errorf(
   537  			`unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%T"`, v)
   538  	}
   539  }
   540  
   541  // InnerQueryFragmentOtherLeafVideo includes the requested fields of the GraphQL type Video.
   542  type InnerQueryFragmentOtherLeafVideo struct {
   543  	Typename           string `json:"__typename"`
   544  	MoreVideoFields    `json:"-"`
   545  	ContentFieldsVideo `json:"-"`
   546  }
   547  
   548  // GetTypename returns InnerQueryFragmentOtherLeafVideo.Typename, and is useful for accessing the field via an interface.
   549  func (v *InnerQueryFragmentOtherLeafVideo) GetTypename() string { return v.Typename }
   550  
   551  // GetId returns InnerQueryFragmentOtherLeafVideo.Id, and is useful for accessing the field via an interface.
   552  func (v *InnerQueryFragmentOtherLeafVideo) GetId() *testutil.ID { return v.MoreVideoFields.Id }
   553  
   554  // GetParent returns InnerQueryFragmentOtherLeafVideo.Parent, and is useful for accessing the field via an interface.
   555  func (v *InnerQueryFragmentOtherLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
   556  	return v.MoreVideoFields.Parent
   557  }
   558  
   559  // GetName returns InnerQueryFragmentOtherLeafVideo.Name, and is useful for accessing the field via an interface.
   560  func (v *InnerQueryFragmentOtherLeafVideo) GetName() string { return v.ContentFieldsVideo.Name }
   561  
   562  // GetUrl returns InnerQueryFragmentOtherLeafVideo.Url, and is useful for accessing the field via an interface.
   563  func (v *InnerQueryFragmentOtherLeafVideo) GetUrl() string { return v.ContentFieldsVideo.Url }
   564  
   565  func (v *InnerQueryFragmentOtherLeafVideo) UnmarshalJSON(b []byte) error {
   566  
   567  	if string(b) == "null" {
   568  		return nil
   569  	}
   570  
   571  	var firstPass struct {
   572  		*InnerQueryFragmentOtherLeafVideo
   573  		graphql.NoUnmarshalJSON
   574  	}
   575  	firstPass.InnerQueryFragmentOtherLeafVideo = v
   576  
   577  	err := json.Unmarshal(b, &firstPass)
   578  	if err != nil {
   579  		return err
   580  	}
   581  
   582  	err = json.Unmarshal(
   583  		b, &v.MoreVideoFields)
   584  	if err != nil {
   585  		return err
   586  	}
   587  	err = json.Unmarshal(
   588  		b, &v.ContentFieldsVideo)
   589  	if err != nil {
   590  		return err
   591  	}
   592  	return nil
   593  }
   594  
   595  type __premarshalInnerQueryFragmentOtherLeafVideo struct {
   596  	Typename string `json:"__typename"`
   597  
   598  	Id *testutil.ID `json:"id"`
   599  
   600  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
   601  
   602  	Name string `json:"name"`
   603  
   604  	Url string `json:"url"`
   605  }
   606  
   607  func (v *InnerQueryFragmentOtherLeafVideo) MarshalJSON() ([]byte, error) {
   608  	premarshaled, err := v.__premarshalJSON()
   609  	if err != nil {
   610  		return nil, err
   611  	}
   612  	return json.Marshal(premarshaled)
   613  }
   614  
   615  func (v *InnerQueryFragmentOtherLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafVideo, error) {
   616  	var retval __premarshalInnerQueryFragmentOtherLeafVideo
   617  
   618  	retval.Typename = v.Typename
   619  	retval.Id = v.MoreVideoFields.Id
   620  	retval.Parent = v.MoreVideoFields.Parent
   621  	retval.Name = v.ContentFieldsVideo.Name
   622  	retval.Url = v.ContentFieldsVideo.Url
   623  	return &retval, nil
   624  }
   625  
   626  // InnerQueryFragmentRandomItemArticle includes the requested fields of the GraphQL type Article.
   627  type InnerQueryFragmentRandomItemArticle struct {
   628  	Typename string `json:"__typename"`
   629  	// ID is the identifier of the content.
   630  	Id                   testutil.ID `json:"id"`
   631  	Name                 string      `json:"name"`
   632  	ContentFieldsArticle `json:"-"`
   633  }
   634  
   635  // GetTypename returns InnerQueryFragmentRandomItemArticle.Typename, and is useful for accessing the field via an interface.
   636  func (v *InnerQueryFragmentRandomItemArticle) GetTypename() string { return v.Typename }
   637  
   638  // GetId returns InnerQueryFragmentRandomItemArticle.Id, and is useful for accessing the field via an interface.
   639  func (v *InnerQueryFragmentRandomItemArticle) GetId() testutil.ID { return v.Id }
   640  
   641  // GetName returns InnerQueryFragmentRandomItemArticle.Name, and is useful for accessing the field via an interface.
   642  func (v *InnerQueryFragmentRandomItemArticle) GetName() string { return v.Name }
   643  
   644  // GetUrl returns InnerQueryFragmentRandomItemArticle.Url, and is useful for accessing the field via an interface.
   645  func (v *InnerQueryFragmentRandomItemArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
   646  
   647  func (v *InnerQueryFragmentRandomItemArticle) UnmarshalJSON(b []byte) error {
   648  
   649  	if string(b) == "null" {
   650  		return nil
   651  	}
   652  
   653  	var firstPass struct {
   654  		*InnerQueryFragmentRandomItemArticle
   655  		graphql.NoUnmarshalJSON
   656  	}
   657  	firstPass.InnerQueryFragmentRandomItemArticle = v
   658  
   659  	err := json.Unmarshal(b, &firstPass)
   660  	if err != nil {
   661  		return err
   662  	}
   663  
   664  	err = json.Unmarshal(
   665  		b, &v.ContentFieldsArticle)
   666  	if err != nil {
   667  		return err
   668  	}
   669  	return nil
   670  }
   671  
   672  type __premarshalInnerQueryFragmentRandomItemArticle struct {
   673  	Typename string `json:"__typename"`
   674  
   675  	Id testutil.ID `json:"id"`
   676  
   677  	Name string `json:"name"`
   678  
   679  	Url string `json:"url"`
   680  }
   681  
   682  func (v *InnerQueryFragmentRandomItemArticle) MarshalJSON() ([]byte, error) {
   683  	premarshaled, err := v.__premarshalJSON()
   684  	if err != nil {
   685  		return nil, err
   686  	}
   687  	return json.Marshal(premarshaled)
   688  }
   689  
   690  func (v *InnerQueryFragmentRandomItemArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemArticle, error) {
   691  	var retval __premarshalInnerQueryFragmentRandomItemArticle
   692  
   693  	retval.Typename = v.Typename
   694  	retval.Id = v.Id
   695  	retval.Name = v.Name
   696  	retval.Url = v.ContentFieldsArticle.Url
   697  	return &retval, nil
   698  }
   699  
   700  // InnerQueryFragmentRandomItemContent includes the requested fields of the GraphQL interface Content.
   701  //
   702  // InnerQueryFragmentRandomItemContent is implemented by the following types:
   703  // InnerQueryFragmentRandomItemArticle
   704  // InnerQueryFragmentRandomItemVideo
   705  // InnerQueryFragmentRandomItemTopic
   706  // The GraphQL type's documentation follows.
   707  //
   708  // Content is implemented by various types like Article, Video, and Topic.
   709  type InnerQueryFragmentRandomItemContent interface {
   710  	implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent()
   711  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
   712  	GetTypename() string
   713  	// GetId returns the interface-field "id" from its implementation.
   714  	// The GraphQL interface field's documentation follows.
   715  	//
   716  	// ID is the identifier of the content.
   717  	GetId() testutil.ID
   718  	// GetName returns the interface-field "name" from its implementation.
   719  	GetName() string
   720  	ContentFields
   721  }
   722  
   723  func (v *InnerQueryFragmentRandomItemArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   724  }
   725  func (v *InnerQueryFragmentRandomItemVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   726  }
   727  func (v *InnerQueryFragmentRandomItemTopic) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() {
   728  }
   729  
   730  func __unmarshalInnerQueryFragmentRandomItemContent(b []byte, v *InnerQueryFragmentRandomItemContent) error {
   731  	if string(b) == "null" {
   732  		return nil
   733  	}
   734  
   735  	var tn struct {
   736  		TypeName string `json:"__typename"`
   737  	}
   738  	err := json.Unmarshal(b, &tn)
   739  	if err != nil {
   740  		return err
   741  	}
   742  
   743  	switch tn.TypeName {
   744  	case "Article":
   745  		*v = new(InnerQueryFragmentRandomItemArticle)
   746  		return json.Unmarshal(b, *v)
   747  	case "Video":
   748  		*v = new(InnerQueryFragmentRandomItemVideo)
   749  		return json.Unmarshal(b, *v)
   750  	case "Topic":
   751  		*v = new(InnerQueryFragmentRandomItemTopic)
   752  		return json.Unmarshal(b, *v)
   753  	case "":
   754  		return fmt.Errorf(
   755  			"response was missing Content.__typename")
   756  	default:
   757  		return fmt.Errorf(
   758  			`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%v"`, tn.TypeName)
   759  	}
   760  }
   761  
   762  func __marshalInnerQueryFragmentRandomItemContent(v *InnerQueryFragmentRandomItemContent) ([]byte, error) {
   763  
   764  	var typename string
   765  	switch v := (*v).(type) {
   766  	case *InnerQueryFragmentRandomItemArticle:
   767  		typename = "Article"
   768  
   769  		premarshaled, err := v.__premarshalJSON()
   770  		if err != nil {
   771  			return nil, err
   772  		}
   773  		result := struct {
   774  			TypeName string `json:"__typename"`
   775  			*__premarshalInnerQueryFragmentRandomItemArticle
   776  		}{typename, premarshaled}
   777  		return json.Marshal(result)
   778  	case *InnerQueryFragmentRandomItemVideo:
   779  		typename = "Video"
   780  
   781  		premarshaled, err := v.__premarshalJSON()
   782  		if err != nil {
   783  			return nil, err
   784  		}
   785  		result := struct {
   786  			TypeName string `json:"__typename"`
   787  			*__premarshalInnerQueryFragmentRandomItemVideo
   788  		}{typename, premarshaled}
   789  		return json.Marshal(result)
   790  	case *InnerQueryFragmentRandomItemTopic:
   791  		typename = "Topic"
   792  
   793  		premarshaled, err := v.__premarshalJSON()
   794  		if err != nil {
   795  			return nil, err
   796  		}
   797  		result := struct {
   798  			TypeName string `json:"__typename"`
   799  			*__premarshalInnerQueryFragmentRandomItemTopic
   800  		}{typename, premarshaled}
   801  		return json.Marshal(result)
   802  	case nil:
   803  		return []byte("null"), nil
   804  	default:
   805  		return nil, fmt.Errorf(
   806  			`unexpected concrete type for InnerQueryFragmentRandomItemContent: "%T"`, v)
   807  	}
   808  }
   809  
   810  // InnerQueryFragmentRandomItemTopic includes the requested fields of the GraphQL type Topic.
   811  type InnerQueryFragmentRandomItemTopic struct {
   812  	Typename string `json:"__typename"`
   813  	// ID is the identifier of the content.
   814  	Id                 testutil.ID `json:"id"`
   815  	Name               string      `json:"name"`
   816  	ContentFieldsTopic `json:"-"`
   817  }
   818  
   819  // GetTypename returns InnerQueryFragmentRandomItemTopic.Typename, and is useful for accessing the field via an interface.
   820  func (v *InnerQueryFragmentRandomItemTopic) GetTypename() string { return v.Typename }
   821  
   822  // GetId returns InnerQueryFragmentRandomItemTopic.Id, and is useful for accessing the field via an interface.
   823  func (v *InnerQueryFragmentRandomItemTopic) GetId() testutil.ID { return v.Id }
   824  
   825  // GetName returns InnerQueryFragmentRandomItemTopic.Name, and is useful for accessing the field via an interface.
   826  func (v *InnerQueryFragmentRandomItemTopic) GetName() string { return v.Name }
   827  
   828  // GetUrl returns InnerQueryFragmentRandomItemTopic.Url, and is useful for accessing the field via an interface.
   829  func (v *InnerQueryFragmentRandomItemTopic) GetUrl() string { return v.ContentFieldsTopic.Url }
   830  
   831  func (v *InnerQueryFragmentRandomItemTopic) UnmarshalJSON(b []byte) error {
   832  
   833  	if string(b) == "null" {
   834  		return nil
   835  	}
   836  
   837  	var firstPass struct {
   838  		*InnerQueryFragmentRandomItemTopic
   839  		graphql.NoUnmarshalJSON
   840  	}
   841  	firstPass.InnerQueryFragmentRandomItemTopic = v
   842  
   843  	err := json.Unmarshal(b, &firstPass)
   844  	if err != nil {
   845  		return err
   846  	}
   847  
   848  	err = json.Unmarshal(
   849  		b, &v.ContentFieldsTopic)
   850  	if err != nil {
   851  		return err
   852  	}
   853  	return nil
   854  }
   855  
   856  type __premarshalInnerQueryFragmentRandomItemTopic struct {
   857  	Typename string `json:"__typename"`
   858  
   859  	Id testutil.ID `json:"id"`
   860  
   861  	Name string `json:"name"`
   862  
   863  	Url string `json:"url"`
   864  }
   865  
   866  func (v *InnerQueryFragmentRandomItemTopic) MarshalJSON() ([]byte, error) {
   867  	premarshaled, err := v.__premarshalJSON()
   868  	if err != nil {
   869  		return nil, err
   870  	}
   871  	return json.Marshal(premarshaled)
   872  }
   873  
   874  func (v *InnerQueryFragmentRandomItemTopic) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemTopic, error) {
   875  	var retval __premarshalInnerQueryFragmentRandomItemTopic
   876  
   877  	retval.Typename = v.Typename
   878  	retval.Id = v.Id
   879  	retval.Name = v.Name
   880  	retval.Url = v.ContentFieldsTopic.Url
   881  	return &retval, nil
   882  }
   883  
   884  // InnerQueryFragmentRandomItemVideo includes the requested fields of the GraphQL type Video.
   885  type InnerQueryFragmentRandomItemVideo struct {
   886  	Typename string `json:"__typename"`
   887  	// ID is the identifier of the content.
   888  	Id                 testutil.ID `json:"id"`
   889  	Name               string      `json:"name"`
   890  	VideoFields        `json:"-"`
   891  	ContentFieldsVideo `json:"-"`
   892  }
   893  
   894  // GetTypename returns InnerQueryFragmentRandomItemVideo.Typename, and is useful for accessing the field via an interface.
   895  func (v *InnerQueryFragmentRandomItemVideo) GetTypename() string { return v.Typename }
   896  
   897  // GetId returns InnerQueryFragmentRandomItemVideo.Id, and is useful for accessing the field via an interface.
   898  func (v *InnerQueryFragmentRandomItemVideo) GetId() testutil.ID { return v.Id }
   899  
   900  // GetName returns InnerQueryFragmentRandomItemVideo.Name, and is useful for accessing the field via an interface.
   901  func (v *InnerQueryFragmentRandomItemVideo) GetName() string { return v.Name }
   902  
   903  // GetUrl returns InnerQueryFragmentRandomItemVideo.Url, and is useful for accessing the field via an interface.
   904  func (v *InnerQueryFragmentRandomItemVideo) GetUrl() string { return v.VideoFields.Url }
   905  
   906  // GetDuration returns InnerQueryFragmentRandomItemVideo.Duration, and is useful for accessing the field via an interface.
   907  func (v *InnerQueryFragmentRandomItemVideo) GetDuration() int { return v.VideoFields.Duration }
   908  
   909  // GetThumbnail returns InnerQueryFragmentRandomItemVideo.Thumbnail, and is useful for accessing the field via an interface.
   910  func (v *InnerQueryFragmentRandomItemVideo) GetThumbnail() VideoFieldsThumbnail {
   911  	return v.VideoFields.Thumbnail
   912  }
   913  
   914  func (v *InnerQueryFragmentRandomItemVideo) UnmarshalJSON(b []byte) error {
   915  
   916  	if string(b) == "null" {
   917  		return nil
   918  	}
   919  
   920  	var firstPass struct {
   921  		*InnerQueryFragmentRandomItemVideo
   922  		graphql.NoUnmarshalJSON
   923  	}
   924  	firstPass.InnerQueryFragmentRandomItemVideo = v
   925  
   926  	err := json.Unmarshal(b, &firstPass)
   927  	if err != nil {
   928  		return err
   929  	}
   930  
   931  	err = json.Unmarshal(
   932  		b, &v.VideoFields)
   933  	if err != nil {
   934  		return err
   935  	}
   936  	err = json.Unmarshal(
   937  		b, &v.ContentFieldsVideo)
   938  	if err != nil {
   939  		return err
   940  	}
   941  	return nil
   942  }
   943  
   944  type __premarshalInnerQueryFragmentRandomItemVideo struct {
   945  	Typename string `json:"__typename"`
   946  
   947  	Id testutil.ID `json:"id"`
   948  
   949  	Name string `json:"name"`
   950  
   951  	Url string `json:"url"`
   952  
   953  	Duration int `json:"duration"`
   954  
   955  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
   956  }
   957  
   958  func (v *InnerQueryFragmentRandomItemVideo) MarshalJSON() ([]byte, error) {
   959  	premarshaled, err := v.__premarshalJSON()
   960  	if err != nil {
   961  		return nil, err
   962  	}
   963  	return json.Marshal(premarshaled)
   964  }
   965  
   966  func (v *InnerQueryFragmentRandomItemVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemVideo, error) {
   967  	var retval __premarshalInnerQueryFragmentRandomItemVideo
   968  
   969  	retval.Typename = v.Typename
   970  	retval.Id = v.Id
   971  	retval.Name = v.Name
   972  	retval.Url = v.VideoFields.Url
   973  	retval.Duration = v.VideoFields.Duration
   974  	retval.Thumbnail = v.VideoFields.Thumbnail
   975  	return &retval, nil
   976  }
   977  
   978  // InnerQueryFragmentRandomLeafArticle includes the requested fields of the GraphQL type Article.
   979  type InnerQueryFragmentRandomLeafArticle struct {
   980  	Typename             string `json:"__typename"`
   981  	ContentFieldsArticle `json:"-"`
   982  }
   983  
   984  // GetTypename returns InnerQueryFragmentRandomLeafArticle.Typename, and is useful for accessing the field via an interface.
   985  func (v *InnerQueryFragmentRandomLeafArticle) GetTypename() string { return v.Typename }
   986  
   987  // GetName returns InnerQueryFragmentRandomLeafArticle.Name, and is useful for accessing the field via an interface.
   988  func (v *InnerQueryFragmentRandomLeafArticle) GetName() string { return v.ContentFieldsArticle.Name }
   989  
   990  // GetUrl returns InnerQueryFragmentRandomLeafArticle.Url, and is useful for accessing the field via an interface.
   991  func (v *InnerQueryFragmentRandomLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url }
   992  
   993  func (v *InnerQueryFragmentRandomLeafArticle) UnmarshalJSON(b []byte) error {
   994  
   995  	if string(b) == "null" {
   996  		return nil
   997  	}
   998  
   999  	var firstPass struct {
  1000  		*InnerQueryFragmentRandomLeafArticle
  1001  		graphql.NoUnmarshalJSON
  1002  	}
  1003  	firstPass.InnerQueryFragmentRandomLeafArticle = v
  1004  
  1005  	err := json.Unmarshal(b, &firstPass)
  1006  	if err != nil {
  1007  		return err
  1008  	}
  1009  
  1010  	err = json.Unmarshal(
  1011  		b, &v.ContentFieldsArticle)
  1012  	if err != nil {
  1013  		return err
  1014  	}
  1015  	return nil
  1016  }
  1017  
  1018  type __premarshalInnerQueryFragmentRandomLeafArticle struct {
  1019  	Typename string `json:"__typename"`
  1020  
  1021  	Name string `json:"name"`
  1022  
  1023  	Url string `json:"url"`
  1024  }
  1025  
  1026  func (v *InnerQueryFragmentRandomLeafArticle) MarshalJSON() ([]byte, error) {
  1027  	premarshaled, err := v.__premarshalJSON()
  1028  	if err != nil {
  1029  		return nil, err
  1030  	}
  1031  	return json.Marshal(premarshaled)
  1032  }
  1033  
  1034  func (v *InnerQueryFragmentRandomLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafArticle, error) {
  1035  	var retval __premarshalInnerQueryFragmentRandomLeafArticle
  1036  
  1037  	retval.Typename = v.Typename
  1038  	retval.Name = v.ContentFieldsArticle.Name
  1039  	retval.Url = v.ContentFieldsArticle.Url
  1040  	return &retval, nil
  1041  }
  1042  
  1043  // InnerQueryFragmentRandomLeafLeafContent includes the requested fields of the GraphQL interface LeafContent.
  1044  //
  1045  // InnerQueryFragmentRandomLeafLeafContent is implemented by the following types:
  1046  // InnerQueryFragmentRandomLeafArticle
  1047  // InnerQueryFragmentRandomLeafVideo
  1048  // The GraphQL type's documentation follows.
  1049  //
  1050  // LeafContent represents content items that can't have child-nodes.
  1051  type InnerQueryFragmentRandomLeafLeafContent interface {
  1052  	implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent()
  1053  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
  1054  	GetTypename() string
  1055  }
  1056  
  1057  func (v *InnerQueryFragmentRandomLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
  1058  }
  1059  func (v *InnerQueryFragmentRandomLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() {
  1060  }
  1061  
  1062  func __unmarshalInnerQueryFragmentRandomLeafLeafContent(b []byte, v *InnerQueryFragmentRandomLeafLeafContent) error {
  1063  	if string(b) == "null" {
  1064  		return nil
  1065  	}
  1066  
  1067  	var tn struct {
  1068  		TypeName string `json:"__typename"`
  1069  	}
  1070  	err := json.Unmarshal(b, &tn)
  1071  	if err != nil {
  1072  		return err
  1073  	}
  1074  
  1075  	switch tn.TypeName {
  1076  	case "Article":
  1077  		*v = new(InnerQueryFragmentRandomLeafArticle)
  1078  		return json.Unmarshal(b, *v)
  1079  	case "Video":
  1080  		*v = new(InnerQueryFragmentRandomLeafVideo)
  1081  		return json.Unmarshal(b, *v)
  1082  	case "":
  1083  		return fmt.Errorf(
  1084  			"response was missing LeafContent.__typename")
  1085  	default:
  1086  		return fmt.Errorf(
  1087  			`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%v"`, tn.TypeName)
  1088  	}
  1089  }
  1090  
  1091  func __marshalInnerQueryFragmentRandomLeafLeafContent(v *InnerQueryFragmentRandomLeafLeafContent) ([]byte, error) {
  1092  
  1093  	var typename string
  1094  	switch v := (*v).(type) {
  1095  	case *InnerQueryFragmentRandomLeafArticle:
  1096  		typename = "Article"
  1097  
  1098  		premarshaled, err := v.__premarshalJSON()
  1099  		if err != nil {
  1100  			return nil, err
  1101  		}
  1102  		result := struct {
  1103  			TypeName string `json:"__typename"`
  1104  			*__premarshalInnerQueryFragmentRandomLeafArticle
  1105  		}{typename, premarshaled}
  1106  		return json.Marshal(result)
  1107  	case *InnerQueryFragmentRandomLeafVideo:
  1108  		typename = "Video"
  1109  
  1110  		premarshaled, err := v.__premarshalJSON()
  1111  		if err != nil {
  1112  			return nil, err
  1113  		}
  1114  		result := struct {
  1115  			TypeName string `json:"__typename"`
  1116  			*__premarshalInnerQueryFragmentRandomLeafVideo
  1117  		}{typename, premarshaled}
  1118  		return json.Marshal(result)
  1119  	case nil:
  1120  		return []byte("null"), nil
  1121  	default:
  1122  		return nil, fmt.Errorf(
  1123  			`unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%T"`, v)
  1124  	}
  1125  }
  1126  
  1127  // InnerQueryFragmentRandomLeafVideo includes the requested fields of the GraphQL type Video.
  1128  type InnerQueryFragmentRandomLeafVideo struct {
  1129  	Typename           string `json:"__typename"`
  1130  	VideoFields        `json:"-"`
  1131  	MoreVideoFields    `json:"-"`
  1132  	ContentFieldsVideo `json:"-"`
  1133  }
  1134  
  1135  // GetTypename returns InnerQueryFragmentRandomLeafVideo.Typename, and is useful for accessing the field via an interface.
  1136  func (v *InnerQueryFragmentRandomLeafVideo) GetTypename() string { return v.Typename }
  1137  
  1138  // GetId returns InnerQueryFragmentRandomLeafVideo.Id, and is useful for accessing the field via an interface.
  1139  func (v *InnerQueryFragmentRandomLeafVideo) GetId() testutil.ID { return v.VideoFields.Id }
  1140  
  1141  // GetName returns InnerQueryFragmentRandomLeafVideo.Name, and is useful for accessing the field via an interface.
  1142  func (v *InnerQueryFragmentRandomLeafVideo) GetName() string { return v.VideoFields.Name }
  1143  
  1144  // GetUrl returns InnerQueryFragmentRandomLeafVideo.Url, and is useful for accessing the field via an interface.
  1145  func (v *InnerQueryFragmentRandomLeafVideo) GetUrl() string { return v.VideoFields.Url }
  1146  
  1147  // GetDuration returns InnerQueryFragmentRandomLeafVideo.Duration, and is useful for accessing the field via an interface.
  1148  func (v *InnerQueryFragmentRandomLeafVideo) GetDuration() int { return v.VideoFields.Duration }
  1149  
  1150  // GetThumbnail returns InnerQueryFragmentRandomLeafVideo.Thumbnail, and is useful for accessing the field via an interface.
  1151  func (v *InnerQueryFragmentRandomLeafVideo) GetThumbnail() VideoFieldsThumbnail {
  1152  	return v.VideoFields.Thumbnail
  1153  }
  1154  
  1155  // GetParent returns InnerQueryFragmentRandomLeafVideo.Parent, and is useful for accessing the field via an interface.
  1156  func (v *InnerQueryFragmentRandomLeafVideo) GetParent() *MoreVideoFieldsParentTopic {
  1157  	return v.MoreVideoFields.Parent
  1158  }
  1159  
  1160  func (v *InnerQueryFragmentRandomLeafVideo) UnmarshalJSON(b []byte) error {
  1161  
  1162  	if string(b) == "null" {
  1163  		return nil
  1164  	}
  1165  
  1166  	var firstPass struct {
  1167  		*InnerQueryFragmentRandomLeafVideo
  1168  		graphql.NoUnmarshalJSON
  1169  	}
  1170  	firstPass.InnerQueryFragmentRandomLeafVideo = v
  1171  
  1172  	err := json.Unmarshal(b, &firstPass)
  1173  	if err != nil {
  1174  		return err
  1175  	}
  1176  
  1177  	err = json.Unmarshal(
  1178  		b, &v.VideoFields)
  1179  	if err != nil {
  1180  		return err
  1181  	}
  1182  	err = json.Unmarshal(
  1183  		b, &v.MoreVideoFields)
  1184  	if err != nil {
  1185  		return err
  1186  	}
  1187  	err = json.Unmarshal(
  1188  		b, &v.ContentFieldsVideo)
  1189  	if err != nil {
  1190  		return err
  1191  	}
  1192  	return nil
  1193  }
  1194  
  1195  type __premarshalInnerQueryFragmentRandomLeafVideo struct {
  1196  	Typename string `json:"__typename"`
  1197  
  1198  	Id testutil.ID `json:"id"`
  1199  
  1200  	Name string `json:"name"`
  1201  
  1202  	Url string `json:"url"`
  1203  
  1204  	Duration int `json:"duration"`
  1205  
  1206  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1207  
  1208  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
  1209  }
  1210  
  1211  func (v *InnerQueryFragmentRandomLeafVideo) MarshalJSON() ([]byte, error) {
  1212  	premarshaled, err := v.__premarshalJSON()
  1213  	if err != nil {
  1214  		return nil, err
  1215  	}
  1216  	return json.Marshal(premarshaled)
  1217  }
  1218  
  1219  func (v *InnerQueryFragmentRandomLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafVideo, error) {
  1220  	var retval __premarshalInnerQueryFragmentRandomLeafVideo
  1221  
  1222  	retval.Typename = v.Typename
  1223  	retval.Id = v.VideoFields.Id
  1224  	retval.Name = v.VideoFields.Name
  1225  	retval.Url = v.VideoFields.Url
  1226  	retval.Duration = v.VideoFields.Duration
  1227  	retval.Thumbnail = v.VideoFields.Thumbnail
  1228  	retval.Parent = v.MoreVideoFields.Parent
  1229  	return &retval, nil
  1230  }
  1231  
  1232  // MoreVideoFields includes the GraphQL fields of Video requested by the fragment MoreVideoFields.
  1233  type MoreVideoFields struct {
  1234  	// ID is documented in the Content interface.
  1235  	Id     *testutil.ID                `json:"id"`
  1236  	Parent *MoreVideoFieldsParentTopic `json:"parent"`
  1237  }
  1238  
  1239  // GetId returns MoreVideoFields.Id, and is useful for accessing the field via an interface.
  1240  func (v *MoreVideoFields) GetId() *testutil.ID { return v.Id }
  1241  
  1242  // GetParent returns MoreVideoFields.Parent, and is useful for accessing the field via an interface.
  1243  func (v *MoreVideoFields) GetParent() *MoreVideoFieldsParentTopic { return v.Parent }
  1244  
  1245  // MoreVideoFieldsParentTopic includes the requested fields of the GraphQL type Topic.
  1246  type MoreVideoFieldsParentTopic struct {
  1247  	Name               *string `json:"name"`
  1248  	Url                *string `json:"url"`
  1249  	ContentFieldsTopic `json:"-"`
  1250  	Children           []MoreVideoFieldsParentTopicChildrenContent `json:"-"`
  1251  }
  1252  
  1253  // GetName returns MoreVideoFieldsParentTopic.Name, and is useful for accessing the field via an interface.
  1254  func (v *MoreVideoFieldsParentTopic) GetName() *string { return v.Name }
  1255  
  1256  // GetUrl returns MoreVideoFieldsParentTopic.Url, and is useful for accessing the field via an interface.
  1257  func (v *MoreVideoFieldsParentTopic) GetUrl() *string { return v.Url }
  1258  
  1259  // GetChildren returns MoreVideoFieldsParentTopic.Children, and is useful for accessing the field via an interface.
  1260  func (v *MoreVideoFieldsParentTopic) GetChildren() []MoreVideoFieldsParentTopicChildrenContent {
  1261  	return v.Children
  1262  }
  1263  
  1264  func (v *MoreVideoFieldsParentTopic) UnmarshalJSON(b []byte) error {
  1265  
  1266  	if string(b) == "null" {
  1267  		return nil
  1268  	}
  1269  
  1270  	var firstPass struct {
  1271  		*MoreVideoFieldsParentTopic
  1272  		Children []json.RawMessage `json:"children"`
  1273  		graphql.NoUnmarshalJSON
  1274  	}
  1275  	firstPass.MoreVideoFieldsParentTopic = v
  1276  
  1277  	err := json.Unmarshal(b, &firstPass)
  1278  	if err != nil {
  1279  		return err
  1280  	}
  1281  
  1282  	err = json.Unmarshal(
  1283  		b, &v.ContentFieldsTopic)
  1284  	if err != nil {
  1285  		return err
  1286  	}
  1287  
  1288  	{
  1289  		dst := &v.Children
  1290  		src := firstPass.Children
  1291  		*dst = make(
  1292  			[]MoreVideoFieldsParentTopicChildrenContent,
  1293  			len(src))
  1294  		for i, src := range src {
  1295  			dst := &(*dst)[i]
  1296  			if len(src) != 0 && string(src) != "null" {
  1297  				err = __unmarshalMoreVideoFieldsParentTopicChildrenContent(
  1298  					src, dst)
  1299  				if err != nil {
  1300  					return fmt.Errorf(
  1301  						"Unable to unmarshal MoreVideoFieldsParentTopic.Children: %w", err)
  1302  				}
  1303  			}
  1304  		}
  1305  	}
  1306  	return nil
  1307  }
  1308  
  1309  type __premarshalMoreVideoFieldsParentTopic struct {
  1310  	Name *string `json:"name"`
  1311  
  1312  	Url *string `json:"url"`
  1313  
  1314  	Children []json.RawMessage `json:"children"`
  1315  }
  1316  
  1317  func (v *MoreVideoFieldsParentTopic) MarshalJSON() ([]byte, error) {
  1318  	premarshaled, err := v.__premarshalJSON()
  1319  	if err != nil {
  1320  		return nil, err
  1321  	}
  1322  	return json.Marshal(premarshaled)
  1323  }
  1324  
  1325  func (v *MoreVideoFieldsParentTopic) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopic, error) {
  1326  	var retval __premarshalMoreVideoFieldsParentTopic
  1327  
  1328  	retval.Name = v.Name
  1329  	retval.Url = v.Url
  1330  	{
  1331  
  1332  		dst := &retval.Children
  1333  		src := v.Children
  1334  		*dst = make(
  1335  			[]json.RawMessage,
  1336  			len(src))
  1337  		for i, src := range src {
  1338  			dst := &(*dst)[i]
  1339  			var err error
  1340  			*dst, err = __marshalMoreVideoFieldsParentTopicChildrenContent(
  1341  				&src)
  1342  			if err != nil {
  1343  				return nil, fmt.Errorf(
  1344  					"Unable to marshal MoreVideoFieldsParentTopic.Children: %w", err)
  1345  			}
  1346  		}
  1347  	}
  1348  	return &retval, nil
  1349  }
  1350  
  1351  // MoreVideoFieldsParentTopicChildrenArticle includes the requested fields of the GraphQL type Article.
  1352  type MoreVideoFieldsParentTopicChildrenArticle struct {
  1353  	Typename *string `json:"__typename"`
  1354  }
  1355  
  1356  // GetTypename returns MoreVideoFieldsParentTopicChildrenArticle.Typename, and is useful for accessing the field via an interface.
  1357  func (v *MoreVideoFieldsParentTopicChildrenArticle) GetTypename() *string { return v.Typename }
  1358  
  1359  // MoreVideoFieldsParentTopicChildrenContent includes the requested fields of the GraphQL interface Content.
  1360  //
  1361  // MoreVideoFieldsParentTopicChildrenContent is implemented by the following types:
  1362  // MoreVideoFieldsParentTopicChildrenArticle
  1363  // MoreVideoFieldsParentTopicChildrenVideo
  1364  // MoreVideoFieldsParentTopicChildrenTopic
  1365  // The GraphQL type's documentation follows.
  1366  //
  1367  // Content is implemented by various types like Article, Video, and Topic.
  1368  type MoreVideoFieldsParentTopicChildrenContent interface {
  1369  	implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent()
  1370  	// GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values).
  1371  	GetTypename() *string
  1372  }
  1373  
  1374  func (v *MoreVideoFieldsParentTopicChildrenArticle) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1375  }
  1376  func (v *MoreVideoFieldsParentTopicChildrenVideo) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1377  }
  1378  func (v *MoreVideoFieldsParentTopicChildrenTopic) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() {
  1379  }
  1380  
  1381  func __unmarshalMoreVideoFieldsParentTopicChildrenContent(b []byte, v *MoreVideoFieldsParentTopicChildrenContent) error {
  1382  	if string(b) == "null" {
  1383  		return nil
  1384  	}
  1385  
  1386  	var tn struct {
  1387  		TypeName string `json:"__typename"`
  1388  	}
  1389  	err := json.Unmarshal(b, &tn)
  1390  	if err != nil {
  1391  		return err
  1392  	}
  1393  
  1394  	switch tn.TypeName {
  1395  	case "Article":
  1396  		*v = new(MoreVideoFieldsParentTopicChildrenArticle)
  1397  		return json.Unmarshal(b, *v)
  1398  	case "Video":
  1399  		*v = new(MoreVideoFieldsParentTopicChildrenVideo)
  1400  		return json.Unmarshal(b, *v)
  1401  	case "Topic":
  1402  		*v = new(MoreVideoFieldsParentTopicChildrenTopic)
  1403  		return json.Unmarshal(b, *v)
  1404  	case "":
  1405  		return fmt.Errorf(
  1406  			"response was missing Content.__typename")
  1407  	default:
  1408  		return fmt.Errorf(
  1409  			`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%v"`, tn.TypeName)
  1410  	}
  1411  }
  1412  
  1413  func __marshalMoreVideoFieldsParentTopicChildrenContent(v *MoreVideoFieldsParentTopicChildrenContent) ([]byte, error) {
  1414  
  1415  	var typename string
  1416  	switch v := (*v).(type) {
  1417  	case *MoreVideoFieldsParentTopicChildrenArticle:
  1418  		typename = "Article"
  1419  
  1420  		result := struct {
  1421  			TypeName string `json:"__typename"`
  1422  			*MoreVideoFieldsParentTopicChildrenArticle
  1423  		}{typename, v}
  1424  		return json.Marshal(result)
  1425  	case *MoreVideoFieldsParentTopicChildrenVideo:
  1426  		typename = "Video"
  1427  
  1428  		premarshaled, err := v.__premarshalJSON()
  1429  		if err != nil {
  1430  			return nil, err
  1431  		}
  1432  		result := struct {
  1433  			TypeName string `json:"__typename"`
  1434  			*__premarshalMoreVideoFieldsParentTopicChildrenVideo
  1435  		}{typename, premarshaled}
  1436  		return json.Marshal(result)
  1437  	case *MoreVideoFieldsParentTopicChildrenTopic:
  1438  		typename = "Topic"
  1439  
  1440  		result := struct {
  1441  			TypeName string `json:"__typename"`
  1442  			*MoreVideoFieldsParentTopicChildrenTopic
  1443  		}{typename, v}
  1444  		return json.Marshal(result)
  1445  	case nil:
  1446  		return []byte("null"), nil
  1447  	default:
  1448  		return nil, fmt.Errorf(
  1449  			`unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%T"`, v)
  1450  	}
  1451  }
  1452  
  1453  // MoreVideoFieldsParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic.
  1454  type MoreVideoFieldsParentTopicChildrenTopic struct {
  1455  	Typename *string `json:"__typename"`
  1456  }
  1457  
  1458  // GetTypename returns MoreVideoFieldsParentTopicChildrenTopic.Typename, and is useful for accessing the field via an interface.
  1459  func (v *MoreVideoFieldsParentTopicChildrenTopic) GetTypename() *string { return v.Typename }
  1460  
  1461  // MoreVideoFieldsParentTopicChildrenVideo includes the requested fields of the GraphQL type Video.
  1462  type MoreVideoFieldsParentTopicChildrenVideo struct {
  1463  	Typename    *string `json:"__typename"`
  1464  	VideoFields `json:"-"`
  1465  }
  1466  
  1467  // GetTypename returns MoreVideoFieldsParentTopicChildrenVideo.Typename, and is useful for accessing the field via an interface.
  1468  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetTypename() *string { return v.Typename }
  1469  
  1470  // GetId returns MoreVideoFieldsParentTopicChildrenVideo.Id, and is useful for accessing the field via an interface.
  1471  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetId() testutil.ID { return v.VideoFields.Id }
  1472  
  1473  // GetName returns MoreVideoFieldsParentTopicChildrenVideo.Name, and is useful for accessing the field via an interface.
  1474  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetName() string { return v.VideoFields.Name }
  1475  
  1476  // GetUrl returns MoreVideoFieldsParentTopicChildrenVideo.Url, and is useful for accessing the field via an interface.
  1477  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetUrl() string { return v.VideoFields.Url }
  1478  
  1479  // GetDuration returns MoreVideoFieldsParentTopicChildrenVideo.Duration, and is useful for accessing the field via an interface.
  1480  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetDuration() int { return v.VideoFields.Duration }
  1481  
  1482  // GetThumbnail returns MoreVideoFieldsParentTopicChildrenVideo.Thumbnail, and is useful for accessing the field via an interface.
  1483  func (v *MoreVideoFieldsParentTopicChildrenVideo) GetThumbnail() VideoFieldsThumbnail {
  1484  	return v.VideoFields.Thumbnail
  1485  }
  1486  
  1487  func (v *MoreVideoFieldsParentTopicChildrenVideo) UnmarshalJSON(b []byte) error {
  1488  
  1489  	if string(b) == "null" {
  1490  		return nil
  1491  	}
  1492  
  1493  	var firstPass struct {
  1494  		*MoreVideoFieldsParentTopicChildrenVideo
  1495  		graphql.NoUnmarshalJSON
  1496  	}
  1497  	firstPass.MoreVideoFieldsParentTopicChildrenVideo = v
  1498  
  1499  	err := json.Unmarshal(b, &firstPass)
  1500  	if err != nil {
  1501  		return err
  1502  	}
  1503  
  1504  	err = json.Unmarshal(
  1505  		b, &v.VideoFields)
  1506  	if err != nil {
  1507  		return err
  1508  	}
  1509  	return nil
  1510  }
  1511  
  1512  type __premarshalMoreVideoFieldsParentTopicChildrenVideo struct {
  1513  	Typename *string `json:"__typename"`
  1514  
  1515  	Id testutil.ID `json:"id"`
  1516  
  1517  	Name string `json:"name"`
  1518  
  1519  	Url string `json:"url"`
  1520  
  1521  	Duration int `json:"duration"`
  1522  
  1523  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1524  }
  1525  
  1526  func (v *MoreVideoFieldsParentTopicChildrenVideo) MarshalJSON() ([]byte, error) {
  1527  	premarshaled, err := v.__premarshalJSON()
  1528  	if err != nil {
  1529  		return nil, err
  1530  	}
  1531  	return json.Marshal(premarshaled)
  1532  }
  1533  
  1534  func (v *MoreVideoFieldsParentTopicChildrenVideo) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopicChildrenVideo, error) {
  1535  	var retval __premarshalMoreVideoFieldsParentTopicChildrenVideo
  1536  
  1537  	retval.Typename = v.Typename
  1538  	retval.Id = v.VideoFields.Id
  1539  	retval.Name = v.VideoFields.Name
  1540  	retval.Url = v.VideoFields.Url
  1541  	retval.Duration = v.VideoFields.Duration
  1542  	retval.Thumbnail = v.VideoFields.Thumbnail
  1543  	return &retval, nil
  1544  }
  1545  
  1546  // QueryFragment includes the GraphQL fields of Query requested by the fragment QueryFragment.
  1547  // The GraphQL type's documentation follows.
  1548  //
  1549  // Query's description is probably ignored by almost all callers.
  1550  type QueryFragment struct {
  1551  	InnerQueryFragment `json:"-"`
  1552  }
  1553  
  1554  // GetRandomItem returns QueryFragment.RandomItem, and is useful for accessing the field via an interface.
  1555  func (v *QueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent {
  1556  	return v.InnerQueryFragment.RandomItem
  1557  }
  1558  
  1559  // GetRandomLeaf returns QueryFragment.RandomLeaf, and is useful for accessing the field via an interface.
  1560  func (v *QueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent {
  1561  	return v.InnerQueryFragment.RandomLeaf
  1562  }
  1563  
  1564  // GetOtherLeaf returns QueryFragment.OtherLeaf, and is useful for accessing the field via an interface.
  1565  func (v *QueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent {
  1566  	return v.InnerQueryFragment.OtherLeaf
  1567  }
  1568  
  1569  func (v *QueryFragment) UnmarshalJSON(b []byte) error {
  1570  
  1571  	if string(b) == "null" {
  1572  		return nil
  1573  	}
  1574  
  1575  	var firstPass struct {
  1576  		*QueryFragment
  1577  		graphql.NoUnmarshalJSON
  1578  	}
  1579  	firstPass.QueryFragment = v
  1580  
  1581  	err := json.Unmarshal(b, &firstPass)
  1582  	if err != nil {
  1583  		return err
  1584  	}
  1585  
  1586  	err = json.Unmarshal(
  1587  		b, &v.InnerQueryFragment)
  1588  	if err != nil {
  1589  		return err
  1590  	}
  1591  	return nil
  1592  }
  1593  
  1594  type __premarshalQueryFragment struct {
  1595  	RandomItem json.RawMessage `json:"randomItem"`
  1596  
  1597  	RandomLeaf json.RawMessage `json:"randomLeaf"`
  1598  
  1599  	OtherLeaf json.RawMessage `json:"otherLeaf"`
  1600  }
  1601  
  1602  func (v *QueryFragment) MarshalJSON() ([]byte, error) {
  1603  	premarshaled, err := v.__premarshalJSON()
  1604  	if err != nil {
  1605  		return nil, err
  1606  	}
  1607  	return json.Marshal(premarshaled)
  1608  }
  1609  
  1610  func (v *QueryFragment) __premarshalJSON() (*__premarshalQueryFragment, error) {
  1611  	var retval __premarshalQueryFragment
  1612  
  1613  	{
  1614  
  1615  		dst := &retval.RandomItem
  1616  		src := v.InnerQueryFragment.RandomItem
  1617  		var err error
  1618  		*dst, err = __marshalInnerQueryFragmentRandomItemContent(
  1619  			&src)
  1620  		if err != nil {
  1621  			return nil, fmt.Errorf(
  1622  				"Unable to marshal QueryFragment.InnerQueryFragment.RandomItem: %w", err)
  1623  		}
  1624  	}
  1625  	{
  1626  
  1627  		dst := &retval.RandomLeaf
  1628  		src := v.InnerQueryFragment.RandomLeaf
  1629  		var err error
  1630  		*dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent(
  1631  			&src)
  1632  		if err != nil {
  1633  			return nil, fmt.Errorf(
  1634  				"Unable to marshal QueryFragment.InnerQueryFragment.RandomLeaf: %w", err)
  1635  		}
  1636  	}
  1637  	{
  1638  
  1639  		dst := &retval.OtherLeaf
  1640  		src := v.InnerQueryFragment.OtherLeaf
  1641  		var err error
  1642  		*dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent(
  1643  			&src)
  1644  		if err != nil {
  1645  			return nil, fmt.Errorf(
  1646  				"Unable to marshal QueryFragment.InnerQueryFragment.OtherLeaf: %w", err)
  1647  		}
  1648  	}
  1649  	return &retval, nil
  1650  }
  1651  
  1652  // VideoFields includes the GraphQL fields of Video requested by the fragment VideoFields.
  1653  type VideoFields struct {
  1654  	// ID is documented in the Content interface.
  1655  	Id                 testutil.ID          `json:"id"`
  1656  	Name               string               `json:"name"`
  1657  	Url                string               `json:"url"`
  1658  	Duration           int                  `json:"duration"`
  1659  	Thumbnail          VideoFieldsThumbnail `json:"thumbnail"`
  1660  	ContentFieldsVideo `json:"-"`
  1661  }
  1662  
  1663  // GetId returns VideoFields.Id, and is useful for accessing the field via an interface.
  1664  func (v *VideoFields) GetId() testutil.ID { return v.Id }
  1665  
  1666  // GetName returns VideoFields.Name, and is useful for accessing the field via an interface.
  1667  func (v *VideoFields) GetName() string { return v.Name }
  1668  
  1669  // GetUrl returns VideoFields.Url, and is useful for accessing the field via an interface.
  1670  func (v *VideoFields) GetUrl() string { return v.Url }
  1671  
  1672  // GetDuration returns VideoFields.Duration, and is useful for accessing the field via an interface.
  1673  func (v *VideoFields) GetDuration() int { return v.Duration }
  1674  
  1675  // GetThumbnail returns VideoFields.Thumbnail, and is useful for accessing the field via an interface.
  1676  func (v *VideoFields) GetThumbnail() VideoFieldsThumbnail { return v.Thumbnail }
  1677  
  1678  func (v *VideoFields) UnmarshalJSON(b []byte) error {
  1679  
  1680  	if string(b) == "null" {
  1681  		return nil
  1682  	}
  1683  
  1684  	var firstPass struct {
  1685  		*VideoFields
  1686  		graphql.NoUnmarshalJSON
  1687  	}
  1688  	firstPass.VideoFields = v
  1689  
  1690  	err := json.Unmarshal(b, &firstPass)
  1691  	if err != nil {
  1692  		return err
  1693  	}
  1694  
  1695  	err = json.Unmarshal(
  1696  		b, &v.ContentFieldsVideo)
  1697  	if err != nil {
  1698  		return err
  1699  	}
  1700  	return nil
  1701  }
  1702  
  1703  type __premarshalVideoFields struct {
  1704  	Id testutil.ID `json:"id"`
  1705  
  1706  	Name string `json:"name"`
  1707  
  1708  	Url string `json:"url"`
  1709  
  1710  	Duration int `json:"duration"`
  1711  
  1712  	Thumbnail VideoFieldsThumbnail `json:"thumbnail"`
  1713  }
  1714  
  1715  func (v *VideoFields) MarshalJSON() ([]byte, error) {
  1716  	premarshaled, err := v.__premarshalJSON()
  1717  	if err != nil {
  1718  		return nil, err
  1719  	}
  1720  	return json.Marshal(premarshaled)
  1721  }
  1722  
  1723  func (v *VideoFields) __premarshalJSON() (*__premarshalVideoFields, error) {
  1724  	var retval __premarshalVideoFields
  1725  
  1726  	retval.Id = v.Id
  1727  	retval.Name = v.Name
  1728  	retval.Url = v.Url
  1729  	retval.Duration = v.Duration
  1730  	retval.Thumbnail = v.Thumbnail
  1731  	return &retval, nil
  1732  }
  1733  
  1734  // VideoFieldsThumbnail includes the requested fields of the GraphQL type Thumbnail.
  1735  type VideoFieldsThumbnail struct {
  1736  	Id testutil.ID `json:"id"`
  1737  }
  1738  
  1739  // GetId returns VideoFieldsThumbnail.Id, and is useful for accessing the field via an interface.
  1740  func (v *VideoFieldsThumbnail) GetId() testutil.ID { return v.Id }
  1741  
  1742  func ComplexNamedFragments(
  1743  	client graphql.Client,
  1744  ) (*ComplexNamedFragmentsResponse, error) {
  1745  	req := &graphql.Request{
  1746  		OpName: "ComplexNamedFragments",
  1747  		Query: `
  1748  query ComplexNamedFragments {
  1749  	... on Query {
  1750  		... QueryFragment
  1751  	}
  1752  }
  1753  fragment QueryFragment on Query {
  1754  	... InnerQueryFragment
  1755  }
  1756  fragment InnerQueryFragment on Query {
  1757  	randomItem {
  1758  		__typename
  1759  		id
  1760  		name
  1761  		... VideoFields
  1762  		... ContentFields
  1763  	}
  1764  	randomLeaf {
  1765  		__typename
  1766  		... VideoFields
  1767  		... MoreVideoFields
  1768  		... ContentFields
  1769  	}
  1770  	otherLeaf: randomLeaf {
  1771  		__typename
  1772  		... on Video {
  1773  			... MoreVideoFields
  1774  			... ContentFields
  1775  		}
  1776  		... ContentFields
  1777  	}
  1778  }
  1779  fragment VideoFields on Video {
  1780  	id
  1781  	name
  1782  	url
  1783  	duration
  1784  	thumbnail {
  1785  		id
  1786  	}
  1787  	... ContentFields
  1788  }
  1789  fragment ContentFields on Content {
  1790  	name
  1791  	url
  1792  }
  1793  fragment MoreVideoFields on Video {
  1794  	id
  1795  	parent {
  1796  		name
  1797  		url
  1798  		... ContentFields
  1799  		children {
  1800  			__typename
  1801  			... VideoFields
  1802  		}
  1803  	}
  1804  }
  1805  `,
  1806  	}
  1807  	var err error
  1808  
  1809  	var data ComplexNamedFragmentsResponse
  1810  	resp := &graphql.Response{Data: &data}
  1811  
  1812  	err = client.MakeRequest(
  1813  		nil,
  1814  		req,
  1815  		resp,
  1816  	)
  1817  
  1818  	return &data, err
  1819  }
  1820