diff --git a/base/golang/test/inputs/json/misc/0a91a.json/default/quicktype.go b/head/golang/test/inputs/json/misc/0a91a.json/default/quicktype.go
index fae9740..acda3e5 100644
--- a/base/golang/test/inputs/json/misc/0a91a.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/0a91a.json/default/quicktype.go
@@ -45,7 +45,7 @@ type Actor struct {
 type Payload struct {
 	Action       *string      `json:"action,omitempty"`
 	Before       *string      `json:"before,omitempty"`
-	Commits      []Commit     `json:"commits,omitempty"`
+	Commits      *[]Commit    `json:"commits,omitempty"`
 	Description  *string      `json:"description"`
 	DistinctSize *int64       `json:"distinct_size,omitempty"`
 	Head         *string      `json:"head,omitempty"`
diff --git a/base/golang/test/inputs/json/misc/26c9c.json/default/quicktype.go b/head/golang/test/inputs/json/misc/26c9c.json/default/quicktype.go
index d5bb555..c4dad74 100644
--- a/base/golang/test/inputs/json/misc/26c9c.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/26c9c.json/default/quicktype.go
@@ -75,7 +75,7 @@ type Column struct {
 	CachedContents *CachedContents `json:"cachedContents,omitempty"`
 	DataTypeName   string          `json:"dataTypeName"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Format          `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/misc/421d4.json/default/quicktype.go b/head/golang/test/inputs/json/misc/421d4.json/default/quicktype.go
index ee87917..99b9613 100644
--- a/base/golang/test/inputs/json/misc/421d4.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/421d4.json/default/quicktype.go
@@ -77,7 +77,7 @@ type Column struct {
 	CachedContents *CachedContents `json:"cachedContents,omitempty"`
 	DataTypeName   string          `json:"dataTypeName"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Query           `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
@@ -94,7 +94,7 @@ type CachedContents struct {
 	Null     int64   `json:"null"`
 	Smallest *string `json:"smallest,omitempty"`
 	Sum      *string `json:"sum,omitempty"`
-	Top      []Top   `json:"top,omitempty"`
+	Top      *[]Top  `json:"top,omitempty"`
 }
 
 type Top struct {
diff --git a/base/golang/test/inputs/json/misc/5f7fe.json/default/quicktype.go b/head/golang/test/inputs/json/misc/5f7fe.json/default/quicktype.go
index 33a76e4..9bd771e 100644
--- a/base/golang/test/inputs/json/misc/5f7fe.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/5f7fe.json/default/quicktype.go
@@ -75,7 +75,7 @@ type Column struct {
 	CachedContents *CachedContents `json:"cachedContents,omitempty"`
 	DataTypeName   TypeName        `json:"dataTypeName"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Format          `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/misc/617e8.json/default/quicktype.go b/head/golang/test/inputs/json/misc/617e8.json/default/quicktype.go
index 8f40dfa..33bc606 100644
--- a/base/golang/test/inputs/json/misc/617e8.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/617e8.json/default/quicktype.go
@@ -76,7 +76,7 @@ type Column struct {
 	DataTypeName   TypeName        `json:"dataTypeName"`
 	Description    *string         `json:"description,omitempty"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Format          `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/misc/65dec.json/default/quicktype.go b/head/golang/test/inputs/json/misc/65dec.json/default/quicktype.go
index 6263e17..78c1c6a 100644
--- a/base/golang/test/inputs/json/misc/65dec.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/65dec.json/default/quicktype.go
@@ -35,8 +35,8 @@ type TopLevel struct {
 type Card struct {
 	Artist        string            `json:"artist"`
 	Cmc           int64             `json:"cmc"`
-	ColorIdentity []ColorIdentity   `json:"colorIdentity,omitempty"`
-	Colors        []Watermark       `json:"colors,omitempty"`
+	ColorIdentity *[]ColorIdentity  `json:"colorIdentity,omitempty"`
+	Colors        *[]Watermark      `json:"colors,omitempty"`
 	Flavor        *string           `json:"flavor,omitempty"`
 	ID            string            `json:"id"`
 	ImageName     string            `json:"imageName"`
@@ -52,14 +52,14 @@ type Card struct {
 	Printings     []string          `json:"printings"`
 	Rarity        Rarity            `json:"rarity"`
 	Reserved      *bool             `json:"reserved,omitempty"`
-	Rulings       []Ruling          `json:"rulings,omitempty"`
-	Subtypes      []string          `json:"subtypes,omitempty"`
-	Supertypes    []string          `json:"supertypes,omitempty"`
+	Rulings       *[]Ruling         `json:"rulings,omitempty"`
+	Subtypes      *[]string         `json:"subtypes,omitempty"`
+	Supertypes    *[]string         `json:"supertypes,omitempty"`
 	Text          *string           `json:"text,omitempty"`
 	Toughness     *string           `json:"toughness,omitempty"`
 	Type          string            `json:"type"`
 	Types         []Type            `json:"types"`
-	Variations    []int64           `json:"variations,omitempty"`
+	Variations    *[]int64          `json:"variations,omitempty"`
 	Watermark     *Watermark        `json:"watermark,omitempty"`
 }
 
diff --git a/base/golang/test/inputs/json/misc/a3d8c.json/default/quicktype.go b/head/golang/test/inputs/json/misc/a3d8c.json/default/quicktype.go
index fba8ca1..5d9449a 100644
--- a/base/golang/test/inputs/json/misc/a3d8c.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/a3d8c.json/default/quicktype.go
@@ -74,7 +74,7 @@ type Column struct {
 	CachedContents *CachedContents `json:"cachedContents,omitempty"`
 	DataTypeName   TypeName        `json:"dataTypeName"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Query           `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/misc/dc44f.json/default/quicktype.go b/head/golang/test/inputs/json/misc/dc44f.json/default/quicktype.go
index 1ce36cf..c000cca 100644
--- a/base/golang/test/inputs/json/misc/dc44f.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/dc44f.json/default/quicktype.go
@@ -35,8 +35,8 @@ type TopLevel struct {
 type Card struct {
 	Artist        string            `json:"artist"`
 	Cmc           int64             `json:"cmc"`
-	ColorIdentity []ColorIdentity   `json:"colorIdentity,omitempty"`
-	Colors        []Color           `json:"colors,omitempty"`
+	ColorIdentity *[]ColorIdentity  `json:"colorIdentity,omitempty"`
+	Colors        *[]Color          `json:"colors,omitempty"`
 	Flavor        *string           `json:"flavor,omitempty"`
 	ID            string            `json:"id"`
 	ImageName     string            `json:"imageName"`
@@ -52,14 +52,14 @@ type Card struct {
 	Printings     []string          `json:"printings"`
 	Rarity        Rarity            `json:"rarity"`
 	Reserved      *bool             `json:"reserved,omitempty"`
-	Rulings       []Ruling          `json:"rulings,omitempty"`
-	Subtypes      []string          `json:"subtypes,omitempty"`
-	Supertypes    []Supertype       `json:"supertypes,omitempty"`
+	Rulings       *[]Ruling         `json:"rulings,omitempty"`
+	Subtypes      *[]string         `json:"subtypes,omitempty"`
+	Supertypes    *[]Supertype      `json:"supertypes,omitempty"`
 	Text          *string           `json:"text,omitempty"`
 	Toughness     *string           `json:"toughness,omitempty"`
 	Type          string            `json:"type"`
 	Types         []Type            `json:"types"`
-	Variations    []int64           `json:"variations,omitempty"`
+	Variations    *[]int64          `json:"variations,omitempty"`
 }
 
 type LegalityElement struct {
diff --git a/base/golang/test/inputs/json/misc/dd1ce.json/default/quicktype.go b/head/golang/test/inputs/json/misc/dd1ce.json/default/quicktype.go
index 1ce36cf..c000cca 100644
--- a/base/golang/test/inputs/json/misc/dd1ce.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/dd1ce.json/default/quicktype.go
@@ -35,8 +35,8 @@ type TopLevel struct {
 type Card struct {
 	Artist        string            `json:"artist"`
 	Cmc           int64             `json:"cmc"`
-	ColorIdentity []ColorIdentity   `json:"colorIdentity,omitempty"`
-	Colors        []Color           `json:"colors,omitempty"`
+	ColorIdentity *[]ColorIdentity  `json:"colorIdentity,omitempty"`
+	Colors        *[]Color          `json:"colors,omitempty"`
 	Flavor        *string           `json:"flavor,omitempty"`
 	ID            string            `json:"id"`
 	ImageName     string            `json:"imageName"`
@@ -52,14 +52,14 @@ type Card struct {
 	Printings     []string          `json:"printings"`
 	Rarity        Rarity            `json:"rarity"`
 	Reserved      *bool             `json:"reserved,omitempty"`
-	Rulings       []Ruling          `json:"rulings,omitempty"`
-	Subtypes      []string          `json:"subtypes,omitempty"`
-	Supertypes    []Supertype       `json:"supertypes,omitempty"`
+	Rulings       *[]Ruling         `json:"rulings,omitempty"`
+	Subtypes      *[]string         `json:"subtypes,omitempty"`
+	Supertypes    *[]Supertype      `json:"supertypes,omitempty"`
 	Text          *string           `json:"text,omitempty"`
 	Toughness     *string           `json:"toughness,omitempty"`
 	Type          string            `json:"type"`
 	Types         []Type            `json:"types"`
-	Variations    []int64           `json:"variations,omitempty"`
+	Variations    *[]int64          `json:"variations,omitempty"`
 }
 
 type LegalityElement struct {
diff --git a/base/golang/test/inputs/json/misc/e8b04.json/default/quicktype.go b/head/golang/test/inputs/json/misc/e8b04.json/default/quicktype.go
index b0f9480..16aae47 100644
--- a/base/golang/test/inputs/json/misc/e8b04.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/e8b04.json/default/quicktype.go
@@ -27,7 +27,7 @@ type TopLevelElement struct {
 	Description              *string           `json:"description,omitempty"`
 	DisplayType              *DisplayType      `json:"displayType,omitempty"`
 	DownloadCount            int64             `json:"downloadCount"`
-	Flags                    []TopLevelFlag    `json:"flags,omitempty"`
+	Flags                    *[]TopLevelFlag   `json:"flags,omitempty"`
 	Grants                   []Grant           `json:"grants"`
 	HideFromCatalog          bool              `json:"hideFromCatalog"`
 	HideFromDataJSON         bool              `json:"hideFromDataJson"`
@@ -56,7 +56,7 @@ type TopLevelElement struct {
 	RowsUpdatedBy            *RowsUpdatedBy    `json:"rowsUpdatedBy,omitempty"`
 	TableAuthor              TableAuthor       `json:"tableAuthor"`
 	TableID                  int64             `json:"tableId"`
-	Tags                     []string          `json:"tags,omitempty"`
+	Tags                     *[]string         `json:"tags,omitempty"`
 	TotalTimesRated          int64             `json:"totalTimesRated"`
 	ViewCount                int64             `json:"viewCount"`
 	ViewLastModified         int64             `json:"viewLastModified"`
@@ -70,7 +70,7 @@ type Grant struct {
 }
 
 type TopLevelMetadata struct {
-	AvailableDisplayTypes []DisplayType             `json:"availableDisplayTypes,omitempty"`
+	AvailableDisplayTypes *[]DisplayType            `json:"availableDisplayTypes,omitempty"`
 	CustomFields          *CustomFields             `json:"custom_fields,omitempty"`
 	JSONQuery             *JSONQuery                `json:"jsonQuery,omitempty"`
 	RDFClass              *string                   `json:"rdfClass,omitempty"`
@@ -91,10 +91,10 @@ type Test struct {
 }
 
 type JSONQuery struct {
-	Group  []Group  `json:"group,omitempty"`
-	Order  []Order  `json:"order,omitempty"`
-	Select []Select `json:"select,omitempty"`
-	Where  *Where   `json:"where,omitempty"`
+	Group  *[]Group  `json:"group,omitempty"`
+	Order  *[]Order  `json:"order,omitempty"`
+	Select *[]Select `json:"select,omitempty"`
+	Where  *Where    `json:"where,omitempty"`
 }
 
 type Group struct {
@@ -112,7 +112,7 @@ type Select struct {
 }
 
 type Where struct {
-	Children        []Child               `json:"children,omitempty"`
+	Children        *[]Child              `json:"children,omitempty"`
 	ColumnFieldName *ChildColumnFieldName `json:"columnFieldName,omitempty"`
 	Metadata        *ChildMetadata        `json:"metadata,omitempty"`
 	Operator        WhereOperator         `json:"operator"`
@@ -127,7 +127,7 @@ type Child struct {
 }
 
 type ChildMetadata struct {
-	CustomValues   []string          `json:"customValues,omitempty"`
+	CustomValues   *[]string         `json:"customValues,omitempty"`
 	Freeform       *bool             `json:"freeform,omitempty"`
 	IncludeAuto    *int64            `json:"includeAuto,omitempty"`
 	Operator       *MetadataOperator `json:"operator,omitempty"`
@@ -194,13 +194,13 @@ type FluffyVisible struct {
 
 type Owner struct {
 	DisplayName            string    `json:"displayName"`
-	Flags                  []string  `json:"flags,omitempty"`
+	Flags                  *[]string `json:"flags,omitempty"`
 	ID                     string    `json:"id"`
 	LastNotificationSeenAt *int64    `json:"lastNotificationSeenAt,omitempty"`
 	ProfileImageURLLarge   *string   `json:"profileImageUrlLarge,omitempty"`
 	ProfileImageURLMedium  *string   `json:"profileImageUrlMedium,omitempty"`
 	ProfileImageURLSmall   *string   `json:"profileImageUrlSmall,omitempty"`
-	Rights                 []string  `json:"rights,omitempty"`
+	Rights                 *[]string `json:"rights,omitempty"`
 	RoleName               *RoleName `json:"roleName,omitempty"`
 	ScreenName             string    `json:"screenName"`
 }
@@ -212,7 +212,7 @@ type Ratings struct {
 type TableAuthor struct {
 	DisplayName string    `json:"displayName"`
 	ID          string    `json:"id"`
-	Rights      []string  `json:"rights,omitempty"`
+	Rights      *[]string `json:"rights,omitempty"`
 	RoleName    *RoleName `json:"roleName,omitempty"`
 	ScreenName  string    `json:"screenName"`
 }
diff --git a/base/golang/test/inputs/json/misc/f74d5.json/default/quicktype.go b/head/golang/test/inputs/json/misc/f74d5.json/default/quicktype.go
index 88325c7..2ba4b38 100644
--- a/base/golang/test/inputs/json/misc/f74d5.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/f74d5.json/default/quicktype.go
@@ -74,7 +74,7 @@ type Column struct {
 	CachedContents *CachedContents `json:"cachedContents,omitempty"`
 	DataTypeName   TypeName        `json:"dataTypeName"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Query           `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/misc/fcca3.json/default/quicktype.go b/head/golang/test/inputs/json/misc/fcca3.json/default/quicktype.go
index 1a66c3b..5a185dc 100644
--- a/base/golang/test/inputs/json/misc/fcca3.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/misc/fcca3.json/default/quicktype.go
@@ -75,7 +75,7 @@ type Column struct {
 	DataTypeName   TypeName        `json:"dataTypeName"`
 	Description    *string         `json:"description,omitempty"`
 	FieldName      string          `json:"fieldName"`
-	Flags          []string        `json:"flags,omitempty"`
+	Flags          *[]string       `json:"flags,omitempty"`
 	Format         Format          `json:"format"`
 	ID             int64           `json:"id"`
 	Name           string          `json:"name"`
diff --git a/base/golang/test/inputs/json/priority/bug427.json/default/quicktype.go b/head/golang/test/inputs/json/priority/bug427.json/default/quicktype.go
index 761a6c7..897bee7 100644
--- a/base/golang/test/inputs/json/priority/bug427.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/priority/bug427.json/default/quicktype.go
@@ -41,56 +41,56 @@ type TopLevelChild struct {
 }
 
 type PurpleChild struct {
-	Children         []FluffyChild          `json:"children,omitempty"`
-	Comment          *StickyComment         `json:"comment,omitempty"`
-	DefaultValue     *string                `json:"defaultValue,omitempty"`
-	ExtendedBy       []ExtendedBy           `json:"extendedBy,omitempty"`
-	ExtendedTypes    []ExtendedBy           `json:"extendedTypes,omitempty"`
-	Flags            IndecentFlags          `json:"flags"`
-	Groups           []Group                `json:"groups,omitempty"`
-	ID               int64                  `json:"id"`
-	ImplementedBy    []ExtendedBy           `json:"implementedBy,omitempty"`
-	ImplementedTypes []ExtendedBy           `json:"implementedTypes,omitempty"`
-	Kind             int64                  `json:"kind"`
-	KindString       FluffyKindString       `json:"kindString"`
-	Name             string                 `json:"name"`
-	Signatures       []StickySignature      `json:"signatures,omitempty"`
-	Sources          []Source               `json:"sources"`
-	Type             *MagentaType           `json:"type,omitempty"`
-	TypeParameter    []TypeParameterElement `json:"typeParameter,omitempty"`
+	Children         *[]FluffyChild          `json:"children,omitempty"`
+	Comment          *StickyComment          `json:"comment,omitempty"`
+	DefaultValue     *string                 `json:"defaultValue,omitempty"`
+	ExtendedBy       *[]ExtendedBy           `json:"extendedBy,omitempty"`
+	ExtendedTypes    *[]ExtendedBy           `json:"extendedTypes,omitempty"`
+	Flags            IndecentFlags           `json:"flags"`
+	Groups           *[]Group                `json:"groups,omitempty"`
+	ID               int64                   `json:"id"`
+	ImplementedBy    *[]ExtendedBy           `json:"implementedBy,omitempty"`
+	ImplementedTypes *[]ExtendedBy           `json:"implementedTypes,omitempty"`
+	Kind             int64                   `json:"kind"`
+	KindString       FluffyKindString        `json:"kindString"`
+	Name             string                  `json:"name"`
+	Signatures       *[]StickySignature      `json:"signatures,omitempty"`
+	Sources          []Source                `json:"sources"`
+	Type             *MagentaType            `json:"type,omitempty"`
+	TypeParameter    *[]TypeParameterElement `json:"typeParameter,omitempty"`
 }
 
 type FluffyChild struct {
-	Children         []TentacledChild  `json:"children,omitempty"`
-	Comment          *StickyComment    `json:"comment,omitempty"`
-	DefaultValue     *string           `json:"defaultValue,omitempty"`
-	Flags            StickyFlags       `json:"flags"`
-	GetSignature     *GetSignature     `json:"getSignature,omitempty"`
-	Groups           []Group           `json:"groups,omitempty"`
-	ID               int64             `json:"id"`
-	ImplementationOf *ExtendedBy       `json:"implementationOf,omitempty"`
-	InheritedFrom    *ExtendedBy       `json:"inheritedFrom,omitempty"`
-	Kind             int64             `json:"kind"`
-	KindString       PurpleKindString  `json:"kindString"`
-	Name             string            `json:"name"`
-	Overwrites       *ExtendedBy       `json:"overwrites,omitempty"`
-	SetSignature     *GetSignature     `json:"setSignature,omitempty"`
-	Signatures       []FluffySignature `json:"signatures,omitempty"`
-	Sources          []Source          `json:"sources"`
-	Type             *IndigoType       `json:"type,omitempty"`
+	Children         *[]TentacledChild  `json:"children,omitempty"`
+	Comment          *StickyComment     `json:"comment,omitempty"`
+	DefaultValue     *string            `json:"defaultValue,omitempty"`
+	Flags            StickyFlags        `json:"flags"`
+	GetSignature     *GetSignature      `json:"getSignature,omitempty"`
+	Groups           *[]Group           `json:"groups,omitempty"`
+	ID               int64              `json:"id"`
+	ImplementationOf *ExtendedBy        `json:"implementationOf,omitempty"`
+	InheritedFrom    *ExtendedBy        `json:"inheritedFrom,omitempty"`
+	Kind             int64              `json:"kind"`
+	KindString       PurpleKindString   `json:"kindString"`
+	Name             string             `json:"name"`
+	Overwrites       *ExtendedBy        `json:"overwrites,omitempty"`
+	SetSignature     *GetSignature      `json:"setSignature,omitempty"`
+	Signatures       *[]FluffySignature `json:"signatures,omitempty"`
+	Sources          []Source           `json:"sources"`
+	Type             *IndigoType        `json:"type,omitempty"`
 }
 
 type TentacledChild struct {
-	Comment      *PurpleComment    `json:"comment,omitempty"`
-	DefaultValue *string           `json:"defaultValue,omitempty"`
-	Flags        PurpleFlags       `json:"flags"`
-	ID           int64             `json:"id"`
-	Kind         int64             `json:"kind"`
-	KindString   PurpleKindString  `json:"kindString"`
-	Name         string            `json:"name"`
-	Signatures   []PurpleSignature `json:"signatures,omitempty"`
-	Sources      []Source          `json:"sources"`
-	Type         *TypeElement      `json:"type,omitempty"`
+	Comment      *PurpleComment     `json:"comment,omitempty"`
+	DefaultValue *string            `json:"defaultValue,omitempty"`
+	Flags        PurpleFlags        `json:"flags"`
+	ID           int64              `json:"id"`
+	Kind         int64              `json:"kind"`
+	KindString   PurpleKindString   `json:"kindString"`
+	Name         string             `json:"name"`
+	Signatures   *[]PurpleSignature `json:"signatures,omitempty"`
+	Sources      []Source           `json:"sources"`
+	Type         *TypeElement       `json:"type,omitempty"`
 }
 
 type PurpleComment struct {
@@ -128,7 +128,7 @@ type IndexSignatureElement struct {
 	Kind       int64             `json:"kind"`
 	KindString string            `json:"kindString"`
 	Name       string            `json:"name"`
-	Parameters []GetSignature    `json:"parameters,omitempty"`
+	Parameters *[]GetSignature   `json:"parameters,omitempty"`
 	Type       PurpleType        `json:"type"`
 }
 
@@ -150,20 +150,20 @@ type GetSignatureChild struct {
 }
 
 type GetSignature struct {
-	Children      []GetSignatureChild     `json:"children,omitempty"`
-	Comment       *GetSignatureComment    `json:"comment,omitempty"`
-	DefaultValue  *string                 `json:"defaultValue,omitempty"`
-	Flags         GetSignatureFlags       `json:"flags"`
-	Groups        []Group                 `json:"groups,omitempty"`
-	ID            int64                   `json:"id"`
-	Kind          int64                   `json:"kind"`
-	KindString    string                  `json:"kindString"`
-	Name          string                  `json:"name"`
-	Parameters    []GetSignatureParameter `json:"parameters,omitempty"`
-	Signatures    []IndexSignatureElement `json:"signatures,omitempty"`
-	Sources       []Source                `json:"sources,omitempty"`
-	Type          *GetSignatureType       `json:"type,omitempty"`
-	TypeParameter []GetSignature          `json:"typeParameter,omitempty"`
+	Children      *[]GetSignatureChild     `json:"children,omitempty"`
+	Comment       *GetSignatureComment     `json:"comment,omitempty"`
+	DefaultValue  *string                  `json:"defaultValue,omitempty"`
+	Flags         GetSignatureFlags        `json:"flags"`
+	Groups        *[]Group                 `json:"groups,omitempty"`
+	ID            int64                    `json:"id"`
+	Kind          int64                    `json:"kind"`
+	KindString    string                   `json:"kindString"`
+	Name          string                   `json:"name"`
+	Parameters    *[]GetSignatureParameter `json:"parameters,omitempty"`
+	Signatures    *[]IndexSignatureElement `json:"signatures,omitempty"`
+	Sources       *[]Source                `json:"sources,omitempty"`
+	Type          *GetSignatureType        `json:"type,omitempty"`
+	TypeParameter *[]GetSignature          `json:"typeParameter,omitempty"`
 }
 
 type ElementType struct {
@@ -218,10 +218,10 @@ type TentacledFlags struct {
 }
 
 type FluffyType struct {
-	ElementType   *ElementType  `json:"elementType,omitempty"`
-	Name          *Name         `json:"name,omitempty"`
-	Type          TypeEnum      `json:"type"`
-	TypeArguments []ElementType `json:"typeArguments,omitempty"`
+	ElementType   *ElementType   `json:"elementType,omitempty"`
+	Name          *Name          `json:"name,omitempty"`
+	Type          TypeEnum       `json:"type"`
+	TypeArguments *[]ElementType `json:"typeArguments,omitempty"`
 }
 
 type TentacledType struct {
@@ -241,17 +241,17 @@ type PurpleDeclaration struct {
 }
 
 type TypeElement struct {
-	Declaration   *GetSignature `json:"declaration,omitempty"`
-	ElementType   *ElementType  `json:"elementType,omitempty"`
-	Name          *Name         `json:"name,omitempty"`
-	Type          TypeEnum      `json:"type"`
-	TypeArguments []ElementType `json:"typeArguments,omitempty"`
+	Declaration   *GetSignature  `json:"declaration,omitempty"`
+	ElementType   *ElementType   `json:"elementType,omitempty"`
+	Name          *Name          `json:"name,omitempty"`
+	Type          TypeEnum       `json:"type"`
+	TypeArguments *[]ElementType `json:"typeArguments,omitempty"`
 }
 
 type StickyComment struct {
 	Returns   *string `json:"returns,omitempty"`
 	ShortText *string `json:"shortText,omitempty"`
-	Tags      []Tag   `json:"tags,omitempty"`
+	Tags      *[]Tag  `json:"tags,omitempty"`
 	Text      *string `json:"text,omitempty"`
 }
 
@@ -271,11 +271,11 @@ type StickyFlags struct {
 }
 
 type ExtendedBy struct {
-	Constraint    *ExtendedBy  `json:"constraint,omitempty"`
-	ID            *int64       `json:"id,omitempty"`
-	Name          string       `json:"name"`
-	Type          TypeEnum     `json:"type"`
-	TypeArguments []ExtendedBy `json:"typeArguments,omitempty"`
+	Constraint    *ExtendedBy   `json:"constraint,omitempty"`
+	ID            *int64        `json:"id,omitempty"`
+	Name          string        `json:"name"`
+	Type          TypeEnum      `json:"type"`
+	TypeArguments *[]ExtendedBy `json:"typeArguments,omitempty"`
 }
 
 type FluffySignature struct {
@@ -288,9 +288,9 @@ type FluffySignature struct {
 	KindString       SignatureKindString `json:"kindString"`
 	Name             string              `json:"name"`
 	Overwrites       *ExtendedBy         `json:"overwrites,omitempty"`
-	Parameters       []PurpleParameter   `json:"parameters,omitempty"`
+	Parameters       *[]PurpleParameter  `json:"parameters,omitempty"`
 	Type             ExtendedBy          `json:"type"`
-	TypeParameter    []GetSignature      `json:"typeParameter,omitempty"`
+	TypeParameter    *[]GetSignature     `json:"typeParameter,omitempty"`
 }
 
 type IndigoFlags struct {
@@ -309,39 +309,39 @@ type PurpleParameter struct {
 }
 
 type StickyType struct {
-	Constraint    *ExtendedBy   `json:"constraint,omitempty"`
-	Declaration   *GetSignature `json:"declaration,omitempty"`
-	ElementType   *ElementType  `json:"elementType,omitempty"`
-	Elements      []ExtendedBy  `json:"elements,omitempty"`
-	ID            *int64        `json:"id,omitempty"`
-	Name          *string       `json:"name,omitempty"`
-	Type          TypeEnum      `json:"type"`
-	TypeArguments []ElementType `json:"typeArguments,omitempty"`
+	Constraint    *ExtendedBy    `json:"constraint,omitempty"`
+	Declaration   *GetSignature  `json:"declaration,omitempty"`
+	ElementType   *ElementType   `json:"elementType,omitempty"`
+	Elements      *[]ExtendedBy  `json:"elements,omitempty"`
+	ID            *int64         `json:"id,omitempty"`
+	Name          *string        `json:"name,omitempty"`
+	Type          TypeEnum       `json:"type"`
+	TypeArguments *[]ElementType `json:"typeArguments,omitempty"`
 }
 
 type IndigoType struct {
-	Constraint    *ExtendedBy          `json:"constraint,omitempty"`
-	Declaration   *FluffyDeclaration   `json:"declaration,omitempty"`
-	ElementType   *ExtendedBy          `json:"elementType,omitempty"`
-	Elements      []ElementType        `json:"elements,omitempty"`
-	ID            *int64               `json:"id,omitempty"`
-	Name          *string              `json:"name,omitempty"`
-	Type          TypeEnum             `json:"type"`
-	TypeArguments []PurpleTypeArgument `json:"typeArguments,omitempty"`
-	Types         []TypeElement        `json:"types,omitempty"`
+	Constraint    *ExtendedBy           `json:"constraint,omitempty"`
+	Declaration   *FluffyDeclaration    `json:"declaration,omitempty"`
+	ElementType   *ExtendedBy           `json:"elementType,omitempty"`
+	Elements      *[]ElementType        `json:"elements,omitempty"`
+	ID            *int64                `json:"id,omitempty"`
+	Name          *string               `json:"name,omitempty"`
+	Type          TypeEnum              `json:"type"`
+	TypeArguments *[]PurpleTypeArgument `json:"typeArguments,omitempty"`
+	Types         *[]TypeElement        `json:"types,omitempty"`
 }
 
 type FluffyDeclaration struct {
-	Children       []StickyChild        `json:"children,omitempty"`
-	Flags          GetSignatureFlags    `json:"flags"`
-	Groups         []Group              `json:"groups,omitempty"`
-	ID             int64                `json:"id"`
-	IndexSignature *IndexSignature      `json:"indexSignature,omitempty"`
-	Kind           int64                `json:"kind"`
-	KindString     string               `json:"kindString"`
-	Name           string               `json:"name"`
-	Signatures     []TentacledSignature `json:"signatures,omitempty"`
-	Sources        []Source             `json:"sources"`
+	Children       *[]StickyChild        `json:"children,omitempty"`
+	Flags          GetSignatureFlags     `json:"flags"`
+	Groups         *[]Group              `json:"groups,omitempty"`
+	ID             int64                 `json:"id"`
+	IndexSignature *IndexSignature       `json:"indexSignature,omitempty"`
+	Kind           int64                 `json:"kind"`
+	KindString     string                `json:"kindString"`
+	Name           string                `json:"name"`
+	Signatures     *[]TentacledSignature `json:"signatures,omitempty"`
+	Sources        []Source              `json:"sources"`
 }
 
 type StickyChild struct {
@@ -356,10 +356,10 @@ type StickyChild struct {
 }
 
 type IndecentType struct {
-	Declaration *GetSignature `json:"declaration,omitempty"`
-	Elements    []ElementType `json:"elements,omitempty"`
-	Name        *Name         `json:"name,omitempty"`
-	Type        TypeEnum      `json:"type"`
+	Declaration *GetSignature  `json:"declaration,omitempty"`
+	Elements    *[]ElementType `json:"elements,omitempty"`
+	Name        *Name          `json:"name,omitempty"`
+	Type        TypeEnum       `json:"type"`
 }
 
 type IndexSignature struct {
@@ -384,7 +384,7 @@ type TentacledSignature struct {
 	Kind       int64               `json:"kind"`
 	KindString SignatureKindString `json:"kindString"`
 	Name       string              `json:"name"`
-	Parameters []FluffyParameter   `json:"parameters,omitempty"`
+	Parameters *[]FluffyParameter  `json:"parameters,omitempty"`
 	Type       ExtendedBy          `json:"type"`
 }
 
@@ -400,7 +400,7 @@ type FluffyParameter struct {
 	Kind       int64          `json:"kind"`
 	KindString string         `json:"kindString"`
 	Name       string         `json:"name"`
-	Sources    []Source       `json:"sources,omitempty"`
+	Sources    *[]Source      `json:"sources,omitempty"`
 	Type       ElementType    `json:"type"`
 }
 
@@ -421,15 +421,15 @@ type IndecentFlags struct {
 }
 
 type StickySignature struct {
-	Comment       StickyComment        `json:"comment"`
-	Flags         IndigoFlags          `json:"flags"`
-	ID            int64                `json:"id"`
-	Kind          int64                `json:"kind"`
-	KindString    SignatureKindString  `json:"kindString"`
-	Name          string               `json:"name"`
-	Parameters    []TentacledParameter `json:"parameters,omitempty"`
-	Type          CunningType          `json:"type"`
-	TypeParameter []GetSignature       `json:"typeParameter,omitempty"`
+	Comment       StickyComment         `json:"comment"`
+	Flags         IndigoFlags           `json:"flags"`
+	ID            int64                 `json:"id"`
+	Kind          int64                 `json:"kind"`
+	KindString    SignatureKindString   `json:"kindString"`
+	Name          string                `json:"name"`
+	Parameters    *[]TentacledParameter `json:"parameters,omitempty"`
+	Type          CunningType           `json:"type"`
+	TypeParameter *[]GetSignature       `json:"typeParameter,omitempty"`
 }
 
 type TentacledParameter struct {
@@ -450,19 +450,19 @@ type AmbitiousType struct {
 	ID            *int64                `json:"id,omitempty"`
 	Name          *string               `json:"name,omitempty"`
 	Type          TypeEnum              `json:"type"`
-	TypeArguments []ElementType         `json:"typeArguments,omitempty"`
+	TypeArguments *[]ElementType        `json:"typeArguments,omitempty"`
 }
 
 type TentacledDeclaration struct {
-	Children       []IndigoChild          `json:"children,omitempty"`
+	Children       *[]IndigoChild         `json:"children,omitempty"`
 	Flags          GetSignatureFlags      `json:"flags"`
-	Groups         []Group                `json:"groups,omitempty"`
+	Groups         *[]Group               `json:"groups,omitempty"`
 	ID             int64                  `json:"id"`
 	IndexSignature *IndexSignatureElement `json:"indexSignature,omitempty"`
 	Kind           int64                  `json:"kind"`
 	KindString     string                 `json:"kindString"`
 	Name           string                 `json:"name"`
-	Signatures     []GetSignature         `json:"signatures,omitempty"`
+	Signatures     *[]GetSignature        `json:"signatures,omitempty"`
 	Sources        []Source               `json:"sources"`
 }
 
@@ -483,25 +483,25 @@ type CunningType struct {
 	ID            *int64             `json:"id,omitempty"`
 	Name          *Name              `json:"name,omitempty"`
 	Type          TypeEnum           `json:"type"`
-	TypeArguments []ElementType      `json:"typeArguments,omitempty"`
+	TypeArguments *[]ElementType     `json:"typeArguments,omitempty"`
 }
 
 type MagentaType struct {
-	Declaration   *StickyDeclaration   `json:"declaration,omitempty"`
-	ElementType   *ElementType         `json:"elementType,omitempty"`
-	Elements      []ExtendedBy         `json:"elements,omitempty"`
-	ID            *int64               `json:"id,omitempty"`
-	Name          *string              `json:"name,omitempty"`
-	Type          TypeEnum             `json:"type"`
-	TypeArguments []FluffyTypeArgument `json:"typeArguments,omitempty"`
-	Types         []ExtendedBy         `json:"types,omitempty"`
-	Value         *string              `json:"value,omitempty"`
+	Declaration   *StickyDeclaration    `json:"declaration,omitempty"`
+	ElementType   *ElementType          `json:"elementType,omitempty"`
+	Elements      *[]ExtendedBy         `json:"elements,omitempty"`
+	ID            *int64                `json:"id,omitempty"`
+	Name          *string               `json:"name,omitempty"`
+	Type          TypeEnum              `json:"type"`
+	TypeArguments *[]FluffyTypeArgument `json:"typeArguments,omitempty"`
+	Types         *[]ExtendedBy         `json:"types,omitempty"`
+	Value         *string               `json:"value,omitempty"`
 }
 
 type StickyDeclaration struct {
-	Children   []IndecentChild   `json:"children,omitempty"`
+	Children   *[]IndecentChild  `json:"children,omitempty"`
 	Flags      GetSignatureFlags `json:"flags"`
-	Groups     []Group           `json:"groups,omitempty"`
+	Groups     *[]Group          `json:"groups,omitempty"`
 	ID         int64             `json:"id"`
 	Kind       int64             `json:"kind"`
 	KindString string            `json:"kindString"`
@@ -527,14 +527,14 @@ type FriskyType struct {
 }
 
 type IndigoDeclaration struct {
-	Children   []GetSignature    `json:"children,omitempty"`
+	Children   *[]GetSignature   `json:"children,omitempty"`
 	Flags      GetSignatureFlags `json:"flags"`
-	Groups     []Group           `json:"groups,omitempty"`
+	Groups     *[]Group          `json:"groups,omitempty"`
 	ID         int64             `json:"id"`
 	Kind       int64             `json:"kind"`
 	KindString string            `json:"kindString"`
 	Name       string            `json:"name"`
-	Signatures []GetSignature    `json:"signatures,omitempty"`
+	Signatures *[]GetSignature   `json:"signatures,omitempty"`
 	Sources    []Source          `json:"sources"`
 }
 
@@ -563,7 +563,7 @@ type MischievousType struct {
 
 type IndecentComment struct {
 	ShortText string `json:"shortText"`
-	Tags      []Tag  `json:"tags,omitempty"`
+	Tags      *[]Tag `json:"tags,omitempty"`
 }
 
 type PurpleKindString string
diff --git a/base/golang/test/inputs/json/priority/nbl-stats.json/default/quicktype.go b/head/golang/test/inputs/json/priority/nbl-stats.json/default/quicktype.go
index c041c3a..28d9e60 100644
--- a/base/golang/test/inputs/json/priority/nbl-stats.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/priority/nbl-stats.json/default/quicktype.go
@@ -110,7 +110,7 @@ type Scorer struct {
 	ScoreboardName                 *ScoreboardNameEnum `json:"scoreboardName,omitempty"`
 	ShirtNumber                    string              `json:"shirtNumber"`
 	Summary                        *string             `json:"summary,omitempty"`
-	Times                          []Time              `json:"times,omitempty"`
+	Times                          *[]Time             `json:"times,omitempty"`
 	Tno                            int64               `json:"tno"`
 	Tot                            *int64              `json:"tot,omitempty"`
 }
diff --git a/base/golang/test/inputs/json/priority/recursive.json/default/quicktype.go b/head/golang/test/inputs/json/priority/recursive.json/default/quicktype.go
index 96e55b0..6cd9506 100644
--- a/base/golang/test/inputs/json/priority/recursive.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/priority/recursive.json/default/quicktype.go
@@ -135,8 +135,8 @@ type Format struct {
 }
 
 type FormatsClass struct {
-	Formats []Format `json:"formats,omitempty"`
-	Height  int64    `json:"height"`
-	URL     string   `json:"url"`
-	Width   int64    `json:"width"`
+	Formats *[]Format `json:"formats,omitempty"`
+	Height  int64     `json:"height"`
+	URL     string    `json:"url"`
+	Width   int64     `json:"width"`
 }
diff --git a/head/golang/test/inputs/json/samples/github-events.json/default/quicktype.go b/head/golang/test/inputs/json/samples/github-events.json/default/quicktype.go
new file mode 100644
index 0000000..670f2f4
--- /dev/null
+++ b/head/golang/test/inputs/json/samples/github-events.json/default/quicktype.go
@@ -0,0 +1,316 @@
+// Code generated from JSON Schema using quicktype. DO NOT EDIT.
+// To parse and unparse this JSON data, add this code to your project and do:
+//
+//    topLevel, err := UnmarshalTopLevel(bytes)
+//    bytes, err = topLevel.Marshal()
+
+package main
+
+import "time"
+
+import "encoding/json"
+
+type TopLevel []TopLevelElement
+
+func UnmarshalTopLevel(data []byte) (TopLevel, error) {
+	var r TopLevel
+	err := json.Unmarshal(data, &r)
+	return r, err
+}
+
+func (r *TopLevel) Marshal() ([]byte, error) {
+	return json.Marshal(r)
+}
+
+type TopLevelElement struct {
+	Actor     Actor        `json:"actor"`
+	CreatedAt time.Time    `json:"created_at"`
+	ID        string       `json:"id"`
+	Org       *Actor       `json:"org,omitempty"`
+	Payload   Payload      `json:"payload"`
+	Public    bool         `json:"public"`
+	Repo      TopLevelRepo `json:"repo"`
+	Type      string       `json:"type"`
+}
+
+type Actor struct {
+	AvatarURL    string  `json:"avatar_url"`
+	DisplayLogin *string `json:"display_login,omitempty"`
+	GravatarID   string  `json:"gravatar_id"`
+	ID           int64   `json:"id"`
+	Login        string  `json:"login"`
+	URL          string  `json:"url"`
+}
+
+type Payload struct {
+	Action       *string             `json:"action,omitempty"`
+	Before       *string             `json:"before,omitempty"`
+	Comment      *Comment            `json:"comment,omitempty"`
+	Commits      *[]Commit           `json:"commits,omitempty"`
+	Description  *string             `json:"description,omitempty"`
+	DistinctSize *int64              `json:"distinct_size,omitempty"`
+	Head         *string             `json:"head,omitempty"`
+	Issue        *Issue              `json:"issue,omitempty"`
+	MasterBranch *string             `json:"master_branch,omitempty"`
+	Number       *int64              `json:"number,omitempty"`
+	PullRequest  *PayloadPullRequest `json:"pull_request,omitempty"`
+	PushID       *int64              `json:"push_id,omitempty"`
+	PusherType   *string             `json:"pusher_type,omitempty"`
+	Ref          *string             `json:"ref,omitempty"`
+	RefType      *string             `json:"ref_type,omitempty"`
+	Size         *int64              `json:"size,omitempty"`
+}
+
+type Comment struct {
+	Body      string    `json:"body"`
+	CreatedAt time.Time `json:"created_at"`
+	HTMLURL   string    `json:"html_url"`
+	ID        int64     `json:"id"`
+	IssueURL  string    `json:"issue_url"`
+	URL       string    `json:"url"`
+	UpdatedAt time.Time `json:"updated_at"`
+	User      UserClass `json:"user"`
+}
+
+type UserClass struct {
+	AvatarURL         string `json:"avatar_url"`
+	EventsURL         string `json:"events_url"`
+	FollowersURL      string `json:"followers_url"`
+	FollowingURL      string `json:"following_url"`
+	GistsURL          string `json:"gists_url"`
+	GravatarID        string `json:"gravatar_id"`
+	HTMLURL           string `json:"html_url"`
+	ID                int64  `json:"id"`
+	Login             string `json:"login"`
+	OrganizationsURL  string `json:"organizations_url"`
+	ReceivedEventsURL string `json:"received_events_url"`
+	ReposURL          string `json:"repos_url"`
+	SiteAdmin         bool   `json:"site_admin"`
+	StarredURL        string `json:"starred_url"`
+	SubscriptionsURL  string `json:"subscriptions_url"`
+	Type              Type   `json:"type"`
+	URL               string `json:"url"`
+}
+
+type Commit struct {
+	Author   Author `json:"author"`
+	Distinct bool   `json:"distinct"`
+	Message  string `json:"message"`
+	SHA      string `json:"sha"`
+	URL      string `json:"url"`
+}
+
+type Author struct {
+	Email string `json:"email"`
+	Name  string `json:"name"`
+}
+
+type Issue struct {
+	Assignee      interface{}       `json:"assignee"`
+	Assignees     []interface{}     `json:"assignees"`
+	Body          string            `json:"body"`
+	ClosedAt      *time.Time        `json:"closed_at"`
+	Comments      int64             `json:"comments"`
+	CommentsURL   string            `json:"comments_url"`
+	CreatedAt     time.Time         `json:"created_at"`
+	EventsURL     string            `json:"events_url"`
+	HTMLURL       string            `json:"html_url"`
+	ID            int64             `json:"id"`
+	Labels        []Label           `json:"labels"`
+	LabelsURL     string            `json:"labels_url"`
+	Locked        bool              `json:"locked"`
+	Milestone     *Milestone        `json:"milestone"`
+	Number        int64             `json:"number"`
+	PullRequest   *IssuePullRequest `json:"pull_request,omitempty"`
+	RepositoryURL string            `json:"repository_url"`
+	State         string            `json:"state"`
+	Title         string            `json:"title"`
+	URL           string            `json:"url"`
+	UpdatedAt     time.Time         `json:"updated_at"`
+	User          UserClass         `json:"user"`
+}
+
+type Label struct {
+	Color   string `json:"color"`
+	Default bool   `json:"default"`
+	ID      int64  `json:"id"`
+	Name    string `json:"name"`
+	URL     string `json:"url"`
+}
+
+type Milestone struct {
+	ClosedAt     interface{} `json:"closed_at"`
+	ClosedIssues int64       `json:"closed_issues"`
+	CreatedAt    time.Time   `json:"created_at"`
+	Creator      UserClass   `json:"creator"`
+	Description  string      `json:"description"`
+	DueOn        *time.Time  `json:"due_on"`
+	HTMLURL      string      `json:"html_url"`
+	ID           int64       `json:"id"`
+	LabelsURL    string      `json:"labels_url"`
+	Number       int64       `json:"number"`
+	OpenIssues   int64       `json:"open_issues"`
+	State        string      `json:"state"`
+	Title        string      `json:"title"`
+	URL          string      `json:"url"`
+	UpdatedAt    time.Time   `json:"updated_at"`
+}
+
+type IssuePullRequest struct {
+	DiffURL  string `json:"diff_url"`
+	HTMLURL  string `json:"html_url"`
+	PatchURL string `json:"patch_url"`
+	URL      string `json:"url"`
+}
+
+type PayloadPullRequest struct {
+	Additions           int64         `json:"additions"`
+	Assignee            interface{}   `json:"assignee"`
+	Assignees           []interface{} `json:"assignees"`
+	Base                Base          `json:"base"`
+	Body                string        `json:"body"`
+	ChangedFiles        int64         `json:"changed_files"`
+	ClosedAt            time.Time     `json:"closed_at"`
+	Comments            int64         `json:"comments"`
+	CommentsURL         string        `json:"comments_url"`
+	Commits             int64         `json:"commits"`
+	CommitsURL          string        `json:"commits_url"`
+	CreatedAt           time.Time     `json:"created_at"`
+	Deletions           int64         `json:"deletions"`
+	DiffURL             string        `json:"diff_url"`
+	HTMLURL             string        `json:"html_url"`
+	Head                Base          `json:"head"`
+	ID                  int64         `json:"id"`
+	IssueURL            string        `json:"issue_url"`
+	Links               Links         `json:"_links"`
+	Locked              bool          `json:"locked"`
+	MaintainerCanModify bool          `json:"maintainer_can_modify"`
+	MergeCommitSHA      string        `json:"merge_commit_sha"`
+	Mergeable           interface{}   `json:"mergeable"`
+	MergeableState      string        `json:"mergeable_state"`
+	Merged              bool          `json:"merged"`
+	MergedAt            time.Time     `json:"merged_at"`
+	MergedBy            UserClass     `json:"merged_by"`
+	Milestone           interface{}   `json:"milestone"`
+	Number              int64         `json:"number"`
+	PatchURL            string        `json:"patch_url"`
+	Rebaseable          interface{}   `json:"rebaseable"`
+	RequestedReviewers  []interface{} `json:"requested_reviewers"`
+	ReviewCommentURL    string        `json:"review_comment_url"`
+	ReviewComments      int64         `json:"review_comments"`
+	ReviewCommentsURL   string        `json:"review_comments_url"`
+	State               string        `json:"state"`
+	StatusesURL         string        `json:"statuses_url"`
+	Title               string        `json:"title"`
+	URL                 string        `json:"url"`
+	UpdatedAt           time.Time     `json:"updated_at"`
+	User                UserClass     `json:"user"`
+}
+
+type Base struct {
+	Label string    `json:"label"`
+	Ref   string    `json:"ref"`
+	Repo  BaseRepo  `json:"repo"`
+	SHA   string    `json:"sha"`
+	User  UserClass `json:"user"`
+}
+
+type BaseRepo struct {
+	ArchiveURL       string      `json:"archive_url"`
+	AssigneesURL     string      `json:"assignees_url"`
+	BlobsURL         string      `json:"blobs_url"`
+	BranchesURL      string      `json:"branches_url"`
+	CloneURL         string      `json:"clone_url"`
+	CollaboratorsURL string      `json:"collaborators_url"`
+	CommentsURL      string      `json:"comments_url"`
+	CommitsURL       string      `json:"commits_url"`
+	CompareURL       string      `json:"compare_url"`
+	ContentsURL      string      `json:"contents_url"`
+	ContributorsURL  string      `json:"contributors_url"`
+	CreatedAt        time.Time   `json:"created_at"`
+	DefaultBranch    string      `json:"default_branch"`
+	DeploymentsURL   string      `json:"deployments_url"`
+	Description      string      `json:"description"`
+	DownloadsURL     string      `json:"downloads_url"`
+	EventsURL        string      `json:"events_url"`
+	Fork             bool        `json:"fork"`
+	Forks            int64       `json:"forks"`
+	ForksCount       int64       `json:"forks_count"`
+	ForksURL         string      `json:"forks_url"`
+	FullName         string      `json:"full_name"`
+	GitCommitsURL    string      `json:"git_commits_url"`
+	GitRefsURL       string      `json:"git_refs_url"`
+	GitTagsURL       string      `json:"git_tags_url"`
+	GitURL           string      `json:"git_url"`
+	HTMLURL          string      `json:"html_url"`
+	HasDownloads     bool        `json:"has_downloads"`
+	HasIssues        bool        `json:"has_issues"`
+	HasPages         bool        `json:"has_pages"`
+	HasProjects      bool        `json:"has_projects"`
+	HasWiki          bool        `json:"has_wiki"`
+	Homepage         string      `json:"homepage"`
+	HooksURL         string      `json:"hooks_url"`
+	ID               int64       `json:"id"`
+	IssueCommentURL  string      `json:"issue_comment_url"`
+	IssueEventsURL   string      `json:"issue_events_url"`
+	IssuesURL        string      `json:"issues_url"`
+	KeysURL          string      `json:"keys_url"`
+	LabelsURL        string      `json:"labels_url"`
+	Language         string      `json:"language"`
+	LanguagesURL     string      `json:"languages_url"`
+	MergesURL        string      `json:"merges_url"`
+	MilestonesURL    string      `json:"milestones_url"`
+	MirrorURL        interface{} `json:"mirror_url"`
+	Name             string      `json:"name"`
+	NotificationsURL string      `json:"notifications_url"`
+	OpenIssues       int64       `json:"open_issues"`
+	OpenIssuesCount  int64       `json:"open_issues_count"`
+	Owner            UserClass   `json:"owner"`
+	Private          bool        `json:"private"`
+	PullsURL         string      `json:"pulls_url"`
+	PushedAt         time.Time   `json:"pushed_at"`
+	ReleasesURL      string      `json:"releases_url"`
+	SSHURL           string      `json:"ssh_url"`
+	Size             int64       `json:"size"`
+	StargazersCount  int64       `json:"stargazers_count"`
+	StargazersURL    string      `json:"stargazers_url"`
+	StatusesURL      string      `json:"statuses_url"`
+	SubscribersURL   string      `json:"subscribers_url"`
+	SubscriptionURL  string      `json:"subscription_url"`
+	SvnURL           string      `json:"svn_url"`
+	TagsURL          string      `json:"tags_url"`
+	TeamsURL         string      `json:"teams_url"`
+	TreesURL         string      `json:"trees_url"`
+	URL              string      `json:"url"`
+	UpdatedAt        time.Time   `json:"updated_at"`
+	Watchers         int64       `json:"watchers"`
+	WatchersCount    int64       `json:"watchers_count"`
+}
+
+type Links struct {
+	Comments       Comments `json:"comments"`
+	Commits        Comments `json:"commits"`
+	HTML           Comments `json:"html"`
+	Issue          Comments `json:"issue"`
+	ReviewComment  Comments `json:"review_comment"`
+	ReviewComments Comments `json:"review_comments"`
+	Self           Comments `json:"self"`
+	Statuses       Comments `json:"statuses"`
+}
+
+type Comments struct {
+	Href string `json:"href"`
+}
+
+type TopLevelRepo struct {
+	ID   int64  `json:"id"`
+	Name string `json:"name"`
+	URL  string `json:"url"`
+}
+
+type Type string
+
+const (
+	User         Type = "User"
+	Organization Type = "Organization"
+)
diff --git a/base/golang/test/inputs/json/samples/pokedex.json/default/quicktype.go b/head/golang/test/inputs/json/samples/pokedex.json/default/quicktype.go
index 9f60094..659663b 100644
--- a/base/golang/test/inputs/json/samples/pokedex.json/default/quicktype.go
+++ b/head/golang/test/inputs/json/samples/pokedex.json/default/quicktype.go
@@ -23,23 +23,23 @@ type TopLevel struct {
 }
 
 type Pokemon struct {
-	AvgSpawns     float64     `json:"avg_spawns"`
-	Candy         string      `json:"candy"`
-	CandyCount    *int64      `json:"candy_count,omitempty"`
-	Egg           Egg         `json:"egg"`
-	Height        string      `json:"height"`
-	ID            int64       `json:"id"`
-	Img           string      `json:"img"`
-	Multipliers   []float64   `json:"multipliers"`
-	Name          string      `json:"name"`
-	NextEvolution []Evolution `json:"next_evolution,omitempty"`
-	Num           string      `json:"num"`
-	PrevEvolution []Evolution `json:"prev_evolution,omitempty"`
-	SpawnChance   float64     `json:"spawn_chance"`
-	SpawnTime     string      `json:"spawn_time"`
-	Type          []Type      `json:"type"`
-	Weaknesses    []Type      `json:"weaknesses"`
-	Weight        string      `json:"weight"`
+	AvgSpawns     float64      `json:"avg_spawns"`
+	Candy         string       `json:"candy"`
+	CandyCount    *int64       `json:"candy_count,omitempty"`
+	Egg           Egg          `json:"egg"`
+	Height        string       `json:"height"`
+	ID            int64        `json:"id"`
+	Img           string       `json:"img"`
+	Multipliers   []float64    `json:"multipliers"`
+	Name          string       `json:"name"`
+	NextEvolution *[]Evolution `json:"next_evolution,omitempty"`
+	Num           string       `json:"num"`
+	PrevEvolution *[]Evolution `json:"prev_evolution,omitempty"`
+	SpawnChance   float64      `json:"spawn_chance"`
+	SpawnTime     string       `json:"spawn_time"`
+	Type          []Type       `json:"type"`
+	Weaknesses    []Type       `json:"weaknesses"`
+	Weight        string       `json:"weight"`
 }
 
 type Evolution struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github1.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github1.graphql/default/quicktype.go
index b0d3652..af84dda 100644
--- a/base/graphql-golang/test/inputs/graphql/github1.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github1.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github2.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github2.graphql/default/quicktype.go
index a2e86f8..b5dafc5 100644
--- a/base/graphql-golang/test/inputs/graphql/github2.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github2.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github3.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github3.graphql/default/quicktype.go
index a045af4..bc274a6 100644
--- a/base/graphql-golang/test/inputs/graphql/github3.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github3.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github4.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github4.graphql/default/quicktype.go
index ada7776..276bc1a 100644
--- a/base/graphql-golang/test/inputs/graphql/github4.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github4.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github5.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github5.graphql/default/quicktype.go
index 8b0815a..4a5996e 100644
--- a/base/graphql-golang/test/inputs/graphql/github5.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github5.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github6.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github6.graphql/default/quicktype.go
index 5474238..a22f90b 100644
--- a/base/graphql-golang/test/inputs/graphql/github6.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github6.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github7.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github7.graphql/default/quicktype.go
index 6211202..d1a9b2e 100644
--- a/base/graphql-golang/test/inputs/graphql/github7.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github7.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github8.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github8.graphql/default/quicktype.go
index 2884cf9..92fda3e 100644
--- a/base/graphql-golang/test/inputs/graphql/github8.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github8.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/graphql-golang/test/inputs/graphql/github9.graphql/default/quicktype.go b/head/graphql-golang/test/inputs/graphql/github9.graphql/default/quicktype.go
index dc48f6c..905e68a 100644
--- a/base/graphql-golang/test/inputs/graphql/github9.graphql/default/quicktype.go
+++ b/head/graphql-golang/test/inputs/graphql/github9.graphql/default/quicktype.go
@@ -19,8 +19,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Data   *Data   `json:"data"`
-	Errors []Error `json:"errors,omitempty"`
+	Data   *Data    `json:"data"`
+	Errors *[]Error `json:"errors,omitempty"`
 }
 
 type Data struct {
diff --git a/base/schema-golang/test/inputs/schema/bool-string.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/bool-string.schema/default/quicktype.go
index 81d5fa1..df73ae3 100644
--- a/base/schema-golang/test/inputs/schema/bool-string.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/bool-string.schema/default/quicktype.go
@@ -22,8 +22,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ArrNullable          []*string      `json:"arrNullable,omitempty"`
-	ArrOne               []string       `json:"arrOne,omitempty"`
+	ArrNullable          *[]*string     `json:"arrNullable,omitempty"`
+	ArrOne               *[]string      `json:"arrOne,omitempty"`
 	Nullable             *string        `json:"nullable"`
 	One                  string         `json:"one"`
 	Optional             *string        `json:"optional,omitempty"`
diff --git a/base/schema-golang/test/inputs/schema/class-map-union.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/class-map-union.schema/default/quicktype.go
index 00cc4e2..c54f880 100644
--- a/base/schema-golang/test/inputs/schema/class-map-union.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/class-map-union.schema/default/quicktype.go
@@ -22,7 +22,7 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Union map[string]*UnionValue `json:"union,omitempty"`
+	Union *map[string]*UnionValue `json:"union,omitempty"`
 }
 
 type UnionClass struct {
diff --git a/base/schema-golang/test/inputs/schema/class-with-additional.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/class-with-additional.schema/default/quicktype.go
index dbaea38..0d7c395 100644
--- a/base/schema-golang/test/inputs/schema/class-with-additional.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/class-with-additional.schema/default/quicktype.go
@@ -22,7 +22,7 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Map map[string]*Map `json:"map,omitempty"`
+	Map *map[string]*Map `json:"map,omitempty"`
 }
 
 type Map struct {
diff --git a/base/schema-golang/test/inputs/schema/enum.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/enum.schema/default/quicktype.go
index ceb7479..29a8c41 100644
--- a/base/schema-golang/test/inputs/schema/enum.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/enum.schema/default/quicktype.go
@@ -22,11 +22,11 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Arr      []Arr      `json:"arr,omitempty"`
-	For      *string    `json:"for,omitempty"`
-	Gve      Gve        `json:"gve"`
-	Lvc      *Lvc       `json:"lvc,omitempty"`
-	OtherArr []OtherArr `json:"otherArr,omitempty"`
+	Arr      *[]Arr      `json:"arr,omitempty"`
+	For      *string     `json:"for,omitempty"`
+	Gve      Gve         `json:"gve"`
+	Lvc      *Lvc        `json:"lvc,omitempty"`
+	OtherArr *[]OtherArr `json:"otherArr,omitempty"`
 }
 
 type OtherArr string
diff --git a/base/schema-golang/test/inputs/schema/enum.schema/enum-type-name-suffix-true--6270b65ee01d/quicktype.go b/head/schema-golang/test/inputs/schema/enum.schema/enum-type-name-suffix-true--6270b65ee01d/quicktype.go
index 95883e7..52797e1 100644
--- a/base/schema-golang/test/inputs/schema/enum.schema/enum-type-name-suffix-true--6270b65ee01d/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/enum.schema/enum-type-name-suffix-true--6270b65ee01d/quicktype.go
@@ -22,11 +22,11 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Arr      []Arr      `json:"arr,omitempty"`
-	For      *string    `json:"for,omitempty"`
-	Gve      Gve        `json:"gve"`
-	Lvc      *Lvc       `json:"lvc,omitempty"`
-	OtherArr []OtherArr `json:"otherArr,omitempty"`
+	Arr      *[]Arr      `json:"arr,omitempty"`
+	For      *string     `json:"for,omitempty"`
+	Gve      Gve         `json:"gve"`
+	Lvc      *Lvc        `json:"lvc,omitempty"`
+	OtherArr *[]OtherArr `json:"otherArr,omitempty"`
 }
 
 type OtherArr string
diff --git a/base/schema-golang/test/inputs/schema/integer-string.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/integer-string.schema/default/quicktype.go
index 1f277a6..399a20d 100644
--- a/base/schema-golang/test/inputs/schema/integer-string.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/integer-string.schema/default/quicktype.go
@@ -22,8 +22,8 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ArrNullable         []*string     `json:"arrNullable,omitempty"`
-	ArrOne              []string      `json:"arrOne,omitempty"`
+	ArrNullable         *[]*string    `json:"arrNullable,omitempty"`
+	ArrOne              *[]string     `json:"arrOne,omitempty"`
 	Nullable            *string       `json:"nullable"`
 	One                 string        `json:"one"`
 	Optional            *string       `json:"optional,omitempty"`
diff --git a/base/schema-golang/test/inputs/schema/optional-const-ref.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/optional-const-ref.schema/default/quicktype.go
index fffd0e2..8131fdd 100644
--- a/base/schema-golang/test/inputs/schema/optional-const-ref.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/optional-const-ref.schema/default/quicktype.go
@@ -19,13 +19,13 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Coordinates         []Coordinate `json:"coordinates,omitempty"`
-	Count               *int64       `json:"count,omitempty"`
-	Label               *string      `json:"label,omitempty"`
-	RequiredCoordinates []Coordinate `json:"requiredCoordinates"`
-	RequiredCount       int64        `json:"requiredCount"`
-	RequiredLabel       string       `json:"requiredLabel"`
-	Weight              *float64     `json:"weight,omitempty"`
+	Coordinates         *[]Coordinate `json:"coordinates,omitempty"`
+	Count               *int64        `json:"count,omitempty"`
+	Label               *string       `json:"label,omitempty"`
+	RequiredCoordinates []Coordinate  `json:"requiredCoordinates"`
+	RequiredCount       int64         `json:"requiredCount"`
+	RequiredLabel       string        `json:"requiredLabel"`
+	Weight              *float64      `json:"weight,omitempty"`
 }
 
 type Coordinate struct {
diff --git a/head/schema-golang/test/inputs/schema/postman-collection.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/postman-collection.schema/default/quicktype.go
new file mode 100644
index 0000000..dc8325e
--- /dev/null
+++ b/head/schema-golang/test/inputs/schema/postman-collection.schema/default/quicktype.go
@@ -0,0 +1,30 @@
+// Code generated from JSON Schema using quicktype. DO NOT EDIT.
+// To parse and unparse this JSON data, add this code to your project and do:
+//
+//    topLevel, err := UnmarshalTopLevel(bytes)
+//    bytes, err = topLevel.Marshal()
+
+package main
+
+import "encoding/json"
+
+func UnmarshalTopLevel(data []byte) (TopLevel, error) {
+	var r TopLevel
+	err := json.Unmarshal(data, &r)
+	return r, err
+}
+
+func (r *TopLevel) Marshal() ([]byte, error) {
+	return json.Marshal(r)
+}
+
+// Postman collection
+type TopLevel struct {
+	Item     *[]TopLevel `json:"item,omitempty"`
+	Name     *string     `json:"name,omitempty"`
+	Response *[]Response `json:"response,omitempty"`
+}
+
+type Response struct {
+	Body *string `json:"body,omitempty"`
+}
diff --git a/base/schema-golang/test/inputs/schema/renaming-bug.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/renaming-bug.schema/default/quicktype.go
index a98901b..00c2b9b 100644
--- a/base/schema-golang/test/inputs/schema/renaming-bug.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/renaming-bug.schema/default/quicktype.go
@@ -19,21 +19,21 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	Version  *string   `json:"version,omitempty"`
-	Fruits   []Fruit   `json:"fruits,omitempty"`
-	Vehicles []Vehicle `json:"vehicles,omitempty"`
+	Version  *string    `json:"version,omitempty"`
+	Fruits   *[]Fruit   `json:"fruits,omitempty"`
+	Vehicles *[]Vehicle `json:"vehicles,omitempty"`
 }
 
 type Fruit struct {
-	Apple   *bool   `json:"apple,omitempty"`
-	Berries []Berry `json:"berries,omitempty"`
-	Orange  *bool   `json:"orange,omitempty"`
+	Apple   *bool    `json:"apple,omitempty"`
+	Berries *[]Berry `json:"berries,omitempty"`
+	Orange  *bool    `json:"orange,omitempty"`
 }
 
 type Berry struct {
-	Color  *Color  `json:"color,omitempty"`
-	Name   *string `json:"name,omitempty"`
-	Shapes []Shape `json:"shapes,omitempty"`
+	Color  *Color   `json:"color,omitempty"`
+	Name   *string  `json:"name,omitempty"`
+	Shapes *[]Shape `json:"shapes,omitempty"`
 }
 
 type Color struct {
@@ -46,8 +46,8 @@ type Shape struct {
 }
 
 type Geometry struct {
-	RectShape     *RectShape      `json:"rectShape,omitempty"`
-	CircularShape []CircularShape `json:"circularShape,omitempty"`
+	RectShape     *RectShape       `json:"rectShape,omitempty"`
+	CircularShape *[]CircularShape `json:"circularShape,omitempty"`
 }
 
 type CircularShape struct {
@@ -55,7 +55,7 @@ type CircularShape struct {
 }
 
 type RectShape struct {
-	Parts []Part `json:"parts,omitempty"`
+	Parts *[]Part `json:"parts,omitempty"`
 }
 
 type Part struct {
diff --git a/base/schema-golang/test/inputs/schema/unevaluated-properties.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/unevaluated-properties.schema/default/quicktype.go
index 53a23c1..8087f46 100644
--- a/base/schema-golang/test/inputs/schema/unevaluated-properties.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/unevaluated-properties.schema/default/quicktype.go
@@ -26,9 +26,9 @@ type TopLevel struct {
 }
 
 type Config struct {
-	Closed   *Closed           `json:"closed"`
-	Name     *string           `json:"name,omitempty"`
-	Settings map[string][]Item `json:"settings,omitempty"`
+	Closed   *Closed            `json:"closed"`
+	Name     *string            `json:"name,omitempty"`
+	Settings *map[string][]Item `json:"settings,omitempty"`
 }
 
 type ClosedClass struct {
diff --git a/base/schema-golang/test/inputs/schema/uuid.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/uuid.schema/default/quicktype.go
index f9ce2dc..76a1a5d 100644
--- a/base/schema-golang/test/inputs/schema/uuid.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/uuid.schema/default/quicktype.go
@@ -19,10 +19,10 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	ArrNullable   []*string `json:"arrNullable,omitempty"`
-	ArrOne        []string  `json:"arrOne,omitempty"`
-	Nullable      *string   `json:"nullable"`
-	One           string    `json:"one"`
-	Optional      *string   `json:"optional,omitempty"`
-	UnionWithEnum string    `json:"unionWithEnum"`
+	ArrNullable   *[]*string `json:"arrNullable,omitempty"`
+	ArrOne        *[]string  `json:"arrOne,omitempty"`
+	Nullable      *string    `json:"nullable"`
+	One           string     `json:"one"`
+	Optional      *string    `json:"optional,omitempty"`
+	UnionWithEnum string     `json:"unionWithEnum"`
 }
diff --git a/base/schema-golang/test/inputs/schema/vega-lite.schema/default/quicktype.go b/head/schema-golang/test/inputs/schema/vega-lite.schema/default/quicktype.go
index fc334b8..447c898 100644
--- a/base/schema-golang/test/inputs/schema/vega-lite.schema/default/quicktype.go
+++ b/head/schema-golang/test/inputs/schema/vega-lite.schema/default/quicktype.go
@@ -22,123 +22,123 @@ func (r *TopLevel) Marshal() ([]byte, error) {
 }
 
 type TopLevel struct {
-	// URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you                          
-	// have a reason to change this, use `https://vega.github.io/schema/vega-lite/v2.json`.                             
-	// Setting the `$schema` property allows automatic validation and autocomplete in editors                           
-	// that support JSON schema.                                                                                        
-	Schema                                                                                      *string                 `json:"$schema,omitempty"`
-	// Sets how the visualization size should be determined. If a string, should be one of                              
-	// `"pad"`, `"fit"` or `"none"`.                                                                                    
-	// Object values can additionally specify parameters for content sizing and automatic                               
-	// resizing.                                                                                                        
-	// `"fit"` is only supported for single and layered views that don't use `rangeStep`.                               
-	//                                                                                                                  
-	// __Default value__: `pad`                                                                                         
-	Autosize                                                                                    *Autosize               `json:"autosize"`
-	// CSS color property to use as the background of visualization.                                                    
-	//                                                                                                                  
-	// __Default value:__ none (transparent)                                                                            
-	Background                                                                                  *string                 `json:"background,omitempty"`
-	// Vega-Lite configuration object.  This property can only be defined at the top-level of a                         
-	// specification.                                                                                                   
-	Config                                                                                      *Config                 `json:"config,omitempty"`
-	// An object describing the data source                                                                             
-	Data                                                                                        *Data                   `json:"data,omitempty"`
-	// Description of this mark for commenting purpose.                                                                 
-	Description                                                                                 *string                 `json:"description,omitempty"`
-	// A key-value mapping between encoding channels and definition of fields.                                          
-	Encoding                                                                                    *EncodingWithFacet      `json:"encoding,omitempty"`
-	// The height of a visualization.                                                                                   
-	//                                                                                                                  
-	// __Default value:__                                                                                               
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                            
-	// [continuous scale](scale.html#continuous), the height will be the value of                                       
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the height is [determined by the range step, paddings, and the                             
-	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                
-	// `rangeStep` is `null`, the height will be the value of                                                           
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                           
-	//                                                                                                                  
-	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the height of a single view.                                                                          
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Height                                                                                      *float64                `json:"height,omitempty"`
-	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                             
-	// `"line"`,                                                                                                        
-	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                               
-	// object](mark.html#mark-def).                                                                                     
-	Mark                                                                                        *AnyMark                `json:"mark"`
-	// Name of the visualization for later reference.                                                                   
-	Name                                                                                        *string                 `json:"name,omitempty"`
-	// The default visualization padding, in pixels, from the edge of the visualization canvas                          
-	// to the data rectangle.  If a number, specifies padding for all sides.                                            
-	// If an object, the value should have the format `{"left": 5, "top": 5, "right": 5,                                
-	// "bottom": 5}` to specify padding for each side of the visualization.                                             
-	//                                                                                                                  
-	// __Default value__: `5`                                                                                           
-	Padding                                                                                     *Padding                `json:"padding"`
-	// An object defining properties of geographic projection.                                                          
-	//                                                                                                                  
-	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                        
-	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                  
-	Projection                                                                                  *Projection             `json:"projection,omitempty"`
-	// A key-value mapping between selection names and definitions.                                                     
-	Selection                                                                                   map[string]SelectionDef `json:"selection,omitempty"`
-	// Title for the plot.                                                                                              
-	Title                                                                                       *Title                  `json:"title"`
-	// An array of data transformations such as filter and new field calculation.                                       
-	Transform                                                                                   []Transform             `json:"transform,omitempty"`
-	// The width of a visualization.                                                                                    
-	//                                                                                                                  
-	// __Default value:__ This will be determined by the following rules:                                               
-	//                                                                                                                  
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                            
-	// [continuous scale](scale.html#continuous), the width will be the value of                                        
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the width is [determined by the range step, paddings, and the                              
-	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                              
-	// `rangeStep` is `null`, the width will be the value of                                                            
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - If no field is mapped to `x` channel, the `width` will be the value of                                         
-	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                          
-	// the value of `rangeStep` for other marks.                                                                        
-	//                                                                                                                  
-	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the width of a single view.                                                                           
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Width                                                                                       *float64                `json:"width,omitempty"`
-	// Layer or single view specifications to be layered.                                                               
-	//                                                                                                                  
-	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                
-	// layering facet specifications is not allowed.                                                                    
-	Layer                                                                                       []LayerSpec             `json:"layer,omitempty"`
-	// Scale, axis, and legend resolutions for layers.                                                                  
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for facets.                                                                  
-	//                                                                                                                  
-	// Scale and legend resolutions for repeated charts.                                                                
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for vertically concatenated charts.                                          
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for horizontally concatenated charts.                                        
-	Resolve                                                                                     *Resolve                `json:"resolve,omitempty"`
-	// An object that describes mappings between `row` and `column` channels and their field                            
-	// definitions.                                                                                                     
-	Facet                                                                                       *FacetMapping           `json:"facet,omitempty"`
-	// A specification of the view that gets faceted.                                                                   
-	Spec                                                                                        *Spec                   `json:"spec,omitempty"`
-	// An object that describes what fields should be repeated into views that are laid out as a                        
-	// `row` or `column`.                                                                                               
-	Repeat                                                                                      *Repeat                 `json:"repeat,omitempty"`
-	// A list of views that should be concatenated and put into a column.                                               
-	Vconcat                                                                                     []Spec                  `json:"vconcat,omitempty"`
-	// A list of views that should be concatenated and put into a row.                                                  
-	Hconcat                                                                                     []Spec                  `json:"hconcat,omitempty"`
+	// URL to [JSON schema](http://json-schema.org/) for a Vega-Lite specification. Unless you                           
+	// have a reason to change this, use `https://vega.github.io/schema/vega-lite/v2.json`.                              
+	// Setting the `$schema` property allows automatic validation and autocomplete in editors                            
+	// that support JSON schema.                                                                                         
+	Schema                                                                                      *string                  `json:"$schema,omitempty"`
+	// Sets how the visualization size should be determined. If a string, should be one of                               
+	// `"pad"`, `"fit"` or `"none"`.                                                                                     
+	// Object values can additionally specify parameters for content sizing and automatic                                
+	// resizing.                                                                                                         
+	// `"fit"` is only supported for single and layered views that don't use `rangeStep`.                                
+	//                                                                                                                   
+	// __Default value__: `pad`                                                                                          
+	Autosize                                                                                    *Autosize                `json:"autosize"`
+	// CSS color property to use as the background of visualization.                                                     
+	//                                                                                                                   
+	// __Default value:__ none (transparent)                                                                             
+	Background                                                                                  *string                  `json:"background,omitempty"`
+	// Vega-Lite configuration object.  This property can only be defined at the top-level of a                          
+	// specification.                                                                                                    
+	Config                                                                                      *Config                  `json:"config,omitempty"`
+	// An object describing the data source                                                                              
+	Data                                                                                        *Data                    `json:"data,omitempty"`
+	// Description of this mark for commenting purpose.                                                                  
+	Description                                                                                 *string                  `json:"description,omitempty"`
+	// A key-value mapping between encoding channels and definition of fields.                                           
+	Encoding                                                                                    *EncodingWithFacet       `json:"encoding,omitempty"`
+	// The height of a visualization.                                                                                    
+	//                                                                                                                   
+	// __Default value:__                                                                                                
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                             
+	// [continuous scale](scale.html#continuous), the height will be the value of                                        
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the height is [determined by the range step, paddings, and the                              
+	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                 
+	// `rangeStep` is `null`, the height will be the value of                                                            
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                            
+	//                                                                                                                   
+	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the height of a single view.                                                                           
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Height                                                                                      *float64                 `json:"height,omitempty"`
+	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                              
+	// `"line"`,                                                                                                         
+	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                                
+	// object](mark.html#mark-def).                                                                                      
+	Mark                                                                                        *AnyMark                 `json:"mark"`
+	// Name of the visualization for later reference.                                                                    
+	Name                                                                                        *string                  `json:"name,omitempty"`
+	// The default visualization padding, in pixels, from the edge of the visualization canvas                           
+	// to the data rectangle.  If a number, specifies padding for all sides.                                             
+	// If an object, the value should have the format `{"left": 5, "top": 5, "right": 5,                                 
+	// "bottom": 5}` to specify padding for each side of the visualization.                                              
+	//                                                                                                                   
+	// __Default value__: `5`                                                                                            
+	Padding                                                                                     *Padding                 `json:"padding"`
+	// An object defining properties of geographic projection.                                                           
+	//                                                                                                                   
+	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                         
+	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                   
+	Projection                                                                                  *Projection              `json:"projection,omitempty"`
+	// A key-value mapping between selection names and definitions.                                                      
+	Selection                                                                                   *map[string]SelectionDef `json:"selection,omitempty"`
+	// Title for the plot.                                                                                               
+	Title                                                                                       *Title                   `json:"title"`
+	// An array of data transformations such as filter and new field calculation.                                        
+	Transform                                                                                   *[]Transform             `json:"transform,omitempty"`
+	// The width of a visualization.                                                                                     
+	//                                                                                                                   
+	// __Default value:__ This will be determined by the following rules:                                                
+	//                                                                                                                   
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                             
+	// [continuous scale](scale.html#continuous), the width will be the value of                                         
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the width is [determined by the range step, paddings, and the                               
+	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                               
+	// `rangeStep` is `null`, the width will be the value of                                                             
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - If no field is mapped to `x` channel, the `width` will be the value of                                          
+	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                           
+	// the value of `rangeStep` for other marks.                                                                         
+	//                                                                                                                   
+	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the width of a single view.                                                                            
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Width                                                                                       *float64                 `json:"width,omitempty"`
+	// Layer or single view specifications to be layered.                                                                
+	//                                                                                                                   
+	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                 
+	// layering facet specifications is not allowed.                                                                     
+	Layer                                                                                       *[]LayerSpec             `json:"layer,omitempty"`
+	// Scale, axis, and legend resolutions for layers.                                                                   
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for facets.                                                                   
+	//                                                                                                                   
+	// Scale and legend resolutions for repeated charts.                                                                 
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for vertically concatenated charts.                                           
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for horizontally concatenated charts.                                         
+	Resolve                                                                                     *Resolve                 `json:"resolve,omitempty"`
+	// An object that describes mappings between `row` and `column` channels and their field                             
+	// definitions.                                                                                                      
+	Facet                                                                                       *FacetMapping            `json:"facet,omitempty"`
+	// A specification of the view that gets faceted.                                                                    
+	Spec                                                                                        *Spec                    `json:"spec,omitempty"`
+	// An object that describes what fields should be repeated into views that are laid out as a                         
+	// `row` or `column`.                                                                                                
+	Repeat                                                                                      *Repeat                  `json:"repeat,omitempty"`
+	// A list of views that should be concatenated and put into a column.                                                
+	Vconcat                                                                                     *[]Spec                  `json:"vconcat,omitempty"`
+	// A list of views that should be concatenated and put into a row.                                                   
+	Hconcat                                                                                     *[]Spec                  `json:"hconcat,omitempty"`
 }
 
 type AutoSizeParams struct {
@@ -166,125 +166,125 @@ type AutoSizeParams struct {
 // Vega-Lite configuration object.  This property can only be defined at the top-level of a
 // specification.
 type Config struct {
-	// Area-Specific Config                                                                                                  
-	Area                                                                                        *MarkConfig                  `json:"area,omitempty"`
-	// Sets how the visualization size should be determined. If a string, should be one of                                   
-	// `"pad"`, `"fit"` or `"none"`.                                                                                         
-	// Object values can additionally specify parameters for content sizing and automatic                                    
-	// resizing.                                                                                                             
-	// `"fit"` is only supported for single and layered views that don't use `rangeStep`.                                    
-	//                                                                                                                       
-	// __Default value__: `pad`                                                                                              
-	Autosize                                                                                    *Autosize                    `json:"autosize"`
-	// Axis configuration, which determines default properties for all `x` and `y`                                           
-	// [axes](axis.html). For a full list of axis configuration options, please see the                                      
-	// [corresponding section of the axis documentation](axis.html#config).                                                  
-	Axis                                                                                        *AxisConfig                  `json:"axis,omitempty"`
-	// Specific axis config for axes with "band" scales.                                                                     
-	AxisBand                                                                                    *VGAxisConfig                `json:"axisBand,omitempty"`
-	// Specific axis config for x-axis along the bottom edge of the chart.                                                   
-	AxisBottom                                                                                  *VGAxisConfig                `json:"axisBottom,omitempty"`
-	// Specific axis config for y-axis along the left edge of the chart.                                                     
-	AxisLeft                                                                                    *VGAxisConfig                `json:"axisLeft,omitempty"`
-	// Specific axis config for y-axis along the right edge of the chart.                                                    
-	AxisRight                                                                                   *VGAxisConfig                `json:"axisRight,omitempty"`
-	// Specific axis config for x-axis along the top edge of the chart.                                                      
-	AxisTop                                                                                     *VGAxisConfig                `json:"axisTop,omitempty"`
-	// X-axis specific config.                                                                                               
-	AxisX                                                                                       *VGAxisConfig                `json:"axisX,omitempty"`
-	// Y-axis specific config.                                                                                               
-	AxisY                                                                                       *VGAxisConfig                `json:"axisY,omitempty"`
-	// CSS color property to use as the background of visualization.                                                         
-	//                                                                                                                       
-	// __Default value:__ none (transparent)                                                                                 
-	Background                                                                                  *string                      `json:"background,omitempty"`
-	// Bar-Specific Config                                                                                                   
-	Bar                                                                                         *BarConfig                   `json:"bar,omitempty"`
-	// Circle-Specific Config                                                                                                
-	Circle                                                                                      *MarkConfig                  `json:"circle,omitempty"`
-	// Default axis and legend title for count fields.                                                                       
-	//                                                                                                                       
-	// __Default value:__ `'Number of Records'`.                                                                             
-	CountTitle                                                                                  *string                      `json:"countTitle,omitempty"`
-	// Defines how Vega-Lite generates title for fields.  There are three possible styles:                                   
-	//                                                                                                                       
-	// - `"verbal"` (Default) - displays function in a verbal style (e.g., "Sum of field",                                   
-	// "Year-month of date", "field (binned)").                                                                              
-	// - `"function"` - displays function using parentheses and capitalized texts (e.g.,                                     
-	// "SUM(field)", "YEARMONTH(date)", "BIN(field)").                                                                       
-	// - `"plain"` - displays only the field name without functions (e.g., "field", "date",                                  
-	// "field").                                                                                                             
-	FieldTitle                                                                                  *FieldTitle                  `json:"fieldTitle,omitempty"`
-	// Geoshape-Specific Config                                                                                              
-	Geoshape                                                                                    *MarkConfig                  `json:"geoshape,omitempty"`
-	// Defines how Vega-Lite should handle invalid values (`null` and `NaN`).                                                
-	// - If set to `"filter"` (default), all data items with null values are filtered.                                       
-	// - If `null`, all data items are included. In this case, invalid values will be                                        
-	// interpreted as zeroes.                                                                                                
-	InvalidValues                                                                               *InvalidValues               `json:"invalidValues,omitempty"`
-	// Legend configuration, which determines default properties for all [legends](legend.html).                             
-	// For a full list of legend configuration options, please see the [corresponding section of                             
-	// in the legend documentation](legend.html#config).                                                                     
-	Legend                                                                                      *LegendConfig                `json:"legend,omitempty"`
-	// Line-Specific Config                                                                                                  
-	Line                                                                                        *MarkConfig                  `json:"line,omitempty"`
-	// Mark Config                                                                                                           
-	Mark                                                                                        *MarkConfig                  `json:"mark,omitempty"`
-	// D3 Number format for axis labels and text tables. For example "s" for SI units. Use [D3's                             
-	// number format pattern](https://github.com/d3/d3-format#locale_format).                                                
-	NumberFormat                                                                                *string                      `json:"numberFormat,omitempty"`
-	// The default visualization padding, in pixels, from the edge of the visualization canvas                               
-	// to the data rectangle.  If a number, specifies padding for all sides.                                                 
-	// If an object, the value should have the format `{"left": 5, "top": 5, "right": 5,                                     
-	// "bottom": 5}` to specify padding for each side of the visualization.                                                  
-	//                                                                                                                       
-	// __Default value__: `5`                                                                                                
-	Padding                                                                                     *Padding                     `json:"padding"`
-	// Point-Specific Config                                                                                                 
-	Point                                                                                       *MarkConfig                  `json:"point,omitempty"`
-	// Projection configuration, which determines default properties for all                                                 
-	// [projections](projection.html). For a full list of projection configuration options,                                  
-	// please see the [corresponding section of the projection                                                               
-	// documentation](projection.html#config).                                                                               
-	Projection                                                                                  *ProjectionConfig            `json:"projection,omitempty"`
-	// An object hash that defines default range arrays or schemes for using with scales.                                    
-	// For a full list of scale range configuration options, please see the [corresponding                                   
-	// section of the scale documentation](scale.html#config).                                                               
-	Range                                                                                       map[string]*RangeConfigValue `json:"range,omitempty"`
-	// Rect-Specific Config                                                                                                  
-	Rect                                                                                        *MarkConfig                  `json:"rect,omitempty"`
-	// Rule-Specific Config                                                                                                  
-	Rule                                                                                        *MarkConfig                  `json:"rule,omitempty"`
-	// Scale configuration determines default properties for all [scales](scale.html). For a                                 
-	// full list of scale configuration options, please see the [corresponding section of the                                
-	// scale documentation](scale.html#config).                                                                              
-	Scale                                                                                       *ScaleConfig                 `json:"scale,omitempty"`
-	// An object hash for defining default properties for each type of selections.                                           
-	Selection                                                                                   *SelectionConfig             `json:"selection,omitempty"`
-	// Square-Specific Config                                                                                                
-	Square                                                                                      *MarkConfig                  `json:"square,omitempty"`
-	// Default stack offset for stackable mark.                                                                              
-	Stack                                                                                       *StackOffset                 `json:"stack,omitempty"`
-	// An object hash that defines key-value mappings to determine default properties for marks                              
-	// with a given [style](mark.html#mark-def).  The keys represent styles names; the value are                             
-	// valid [mark configuration objects](mark.html#config).                                                                 
-	Style                                                                                       map[string]VGMarkConfig      `json:"style,omitempty"`
-	// Text-Specific Config                                                                                                  
-	Text                                                                                        *TextConfig                  `json:"text,omitempty"`
-	// Tick-Specific Config                                                                                                  
-	Tick                                                                                        *TickConfig                  `json:"tick,omitempty"`
-	// Default datetime format for axis and legend labels. The format can be set directly on                                 
-	// each axis and legend. Use [D3's time format                                                                           
-	// pattern](https://github.com/d3/d3-time-format#locale_format).                                                         
-	//                                                                                                                       
-	// __Default value:__ `'%b %d, %Y'`.                                                                                     
-	TimeFormat                                                                                  *string                      `json:"timeFormat,omitempty"`
-	// Title configuration, which determines default properties for all [titles](title.html).                                
-	// For a full list of title configuration options, please see the [corresponding section of                              
-	// the title documentation](title.html#config).                                                                          
-	Title                                                                                       *VGTitleConfig               `json:"title,omitempty"`
-	// Default properties for [single view plots](spec.html#single).                                                         
-	View                                                                                        *ViewConfig                  `json:"view,omitempty"`
+	// Area-Specific Config                                                                                                   
+	Area                                                                                        *MarkConfig                   `json:"area,omitempty"`
+	// Sets how the visualization size should be determined. If a string, should be one of                                    
+	// `"pad"`, `"fit"` or `"none"`.                                                                                          
+	// Object values can additionally specify parameters for content sizing and automatic                                     
+	// resizing.                                                                                                              
+	// `"fit"` is only supported for single and layered views that don't use `rangeStep`.                                     
+	//                                                                                                                        
+	// __Default value__: `pad`                                                                                               
+	Autosize                                                                                    *Autosize                     `json:"autosize"`
+	// Axis configuration, which determines default properties for all `x` and `y`                                            
+	// [axes](axis.html). For a full list of axis configuration options, please see the                                       
+	// [corresponding section of the axis documentation](axis.html#config).                                                   
+	Axis                                                                                        *AxisConfig                   `json:"axis,omitempty"`
+	// Specific axis config for axes with "band" scales.                                                                      
+	AxisBand                                                                                    *VGAxisConfig                 `json:"axisBand,omitempty"`
+	// Specific axis config for x-axis along the bottom edge of the chart.                                                    
+	AxisBottom                                                                                  *VGAxisConfig                 `json:"axisBottom,omitempty"`
+	// Specific axis config for y-axis along the left edge of the chart.                                                      
+	AxisLeft                                                                                    *VGAxisConfig                 `json:"axisLeft,omitempty"`
+	// Specific axis config for y-axis along the right edge of the chart.                                                     
+	AxisRight                                                                                   *VGAxisConfig                 `json:"axisRight,omitempty"`
+	// Specific axis config for x-axis along the top edge of the chart.                                                       
+	AxisTop                                                                                     *VGAxisConfig                 `json:"axisTop,omitempty"`
+	// X-axis specific config.                                                                                                
+	AxisX                                                                                       *VGAxisConfig                 `json:"axisX,omitempty"`
+	// Y-axis specific config.                                                                                                
+	AxisY                                                                                       *VGAxisConfig                 `json:"axisY,omitempty"`
+	// CSS color property to use as the background of visualization.                                                          
+	//                                                                                                                        
+	// __Default value:__ none (transparent)                                                                                  
+	Background                                                                                  *string                       `json:"background,omitempty"`
+	// Bar-Specific Config                                                                                                    
+	Bar                                                                                         *BarConfig                    `json:"bar,omitempty"`
+	// Circle-Specific Config                                                                                                 
+	Circle                                                                                      *MarkConfig                   `json:"circle,omitempty"`
+	// Default axis and legend title for count fields.                                                                        
+	//                                                                                                                        
+	// __Default value:__ `'Number of Records'`.                                                                              
+	CountTitle                                                                                  *string                       `json:"countTitle,omitempty"`
+	// Defines how Vega-Lite generates title for fields.  There are three possible styles:                                    
+	//                                                                                                                        
+	// - `"verbal"` (Default) - displays function in a verbal style (e.g., "Sum of field",                                    
+	// "Year-month of date", "field (binned)").                                                                               
+	// - `"function"` - displays function using parentheses and capitalized texts (e.g.,                                      
+	// "SUM(field)", "YEARMONTH(date)", "BIN(field)").                                                                        
+	// - `"plain"` - displays only the field name without functions (e.g., "field", "date",                                   
+	// "field").                                                                                                              
+	FieldTitle                                                                                  *FieldTitle                   `json:"fieldTitle,omitempty"`
+	// Geoshape-Specific Config                                                                                               
+	Geoshape                                                                                    *MarkConfig                   `json:"geoshape,omitempty"`
+	// Defines how Vega-Lite should handle invalid values (`null` and `NaN`).                                                 
+	// - If set to `"filter"` (default), all data items with null values are filtered.                                        
+	// - If `null`, all data items are included. In this case, invalid values will be                                         
+	// interpreted as zeroes.                                                                                                 
+	InvalidValues                                                                               *InvalidValues                `json:"invalidValues,omitempty"`
+	// Legend configuration, which determines default properties for all [legends](legend.html).                              
+	// For a full list of legend configuration options, please see the [corresponding section of                              
+	// in the legend documentation](legend.html#config).                                                                      
+	Legend                                                                                      *LegendConfig                 `json:"legend,omitempty"`
+	// Line-Specific Config                                                                                                   
+	Line                                                                                        *MarkConfig                   `json:"line,omitempty"`
+	// Mark Config                                                                                                            
+	Mark                                                                                        *MarkConfig                   `json:"mark,omitempty"`
+	// D3 Number format for axis labels and text tables. For example "s" for SI units. Use [D3's                              
+	// number format pattern](https://github.com/d3/d3-format#locale_format).                                                 
+	NumberFormat                                                                                *string                       `json:"numberFormat,omitempty"`
+	// The default visualization padding, in pixels, from the edge of the visualization canvas                                
+	// to the data rectangle.  If a number, specifies padding for all sides.                                                  
+	// If an object, the value should have the format `{"left": 5, "top": 5, "right": 5,                                      
+	// "bottom": 5}` to specify padding for each side of the visualization.                                                   
+	//                                                                                                                        
+	// __Default value__: `5`                                                                                                 
+	Padding                                                                                     *Padding                      `json:"padding"`
+	// Point-Specific Config                                                                                                  
+	Point                                                                                       *MarkConfig                   `json:"point,omitempty"`
+	// Projection configuration, which determines default properties for all                                                  
+	// [projections](projection.html). For a full list of projection configuration options,                                   
+	// please see the [corresponding section of the projection                                                                
+	// documentation](projection.html#config).                                                                                
+	Projection                                                                                  *ProjectionConfig             `json:"projection,omitempty"`
+	// An object hash that defines default range arrays or schemes for using with scales.                                     
+	// For a full list of scale range configuration options, please see the [corresponding                                    
+	// section of the scale documentation](scale.html#config).                                                                
+	Range                                                                                       *map[string]*RangeConfigValue `json:"range,omitempty"`
+	// Rect-Specific Config                                                                                                   
+	Rect                                                                                        *MarkConfig                   `json:"rect,omitempty"`
+	// Rule-Specific Config                                                                                                   
+	Rule                                                                                        *MarkConfig                   `json:"rule,omitempty"`
+	// Scale configuration determines default properties for all [scales](scale.html). For a                                  
+	// full list of scale configuration options, please see the [corresponding section of the                                 
+	// scale documentation](scale.html#config).                                                                               
+	Scale                                                                                       *ScaleConfig                  `json:"scale,omitempty"`
+	// An object hash for defining default properties for each type of selections.                                            
+	Selection                                                                                   *SelectionConfig              `json:"selection,omitempty"`
+	// Square-Specific Config                                                                                                 
+	Square                                                                                      *MarkConfig                   `json:"square,omitempty"`
+	// Default stack offset for stackable mark.                                                                               
+	Stack                                                                                       *StackOffset                  `json:"stack,omitempty"`
+	// An object hash that defines key-value mappings to determine default properties for marks                               
+	// with a given [style](mark.html#mark-def).  The keys represent styles names; the value are                              
+	// valid [mark configuration objects](mark.html#config).                                                                  
+	Style                                                                                       *map[string]VGMarkConfig      `json:"style,omitempty"`
+	// Text-Specific Config                                                                                                   
+	Text                                                                                        *TextConfig                   `json:"text,omitempty"`
+	// Tick-Specific Config                                                                                                   
+	Tick                                                                                        *TickConfig                   `json:"tick,omitempty"`
+	// Default datetime format for axis and legend labels. The format can be set directly on                                  
+	// each axis and legend. Use [D3's time format                                                                            
+	// pattern](https://github.com/d3/d3-time-format#locale_format).                                                          
+	//                                                                                                                        
+	// __Default value:__ `'%b %d, %Y'`.                                                                                      
+	TimeFormat                                                                                  *string                       `json:"timeFormat,omitempty"`
+	// Title configuration, which determines default properties for all [titles](title.html).                                 
+	// For a full list of title configuration options, please see the [corresponding section of                               
+	// the title documentation](title.html#config).                                                                           
+	Title                                                                                       *VGTitleConfig                `json:"title,omitempty"`
+	// Default properties for [single view plots](spec.html#single).                                                          
+	View                                                                                        *ViewConfig                   `json:"view,omitempty"`
 }
 
 // Area-Specific Config
@@ -411,7 +411,7 @@ type MarkConfig struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -460,7 +460,7 @@ type AxisConfig struct {
 	// Color of gridlines.                                                                                          
 	GridColor                                                                                    *string            `json:"gridColor,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the grid dash array.                                 
-	GridDash                                                                                     []float64          `json:"gridDash,omitempty"`
+	GridDash                                                                                     *[]float64         `json:"gridDash,omitempty"`
 	// The stroke opacity of grid (value between [0,1])                                                             
 	//                                                                                                              
 	// __Default value:__ (`1` by default)                                                                          
@@ -602,7 +602,7 @@ type VGAxisConfig struct {
 	// Color of gridlines.                                                                                          
 	GridColor                                                                                    *string            `json:"gridColor,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the grid dash array.                                 
-	GridDash                                                                                     []float64          `json:"gridDash,omitempty"`
+	GridDash                                                                                     *[]float64         `json:"gridDash,omitempty"`
 	// The stroke opacity of grid (value between [0,1])                                                             
 	//                                                                                                              
 	// __Default value:__ (`1` by default)                                                                          
@@ -821,7 +821,7 @@ type BarConfig struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -901,7 +901,7 @@ type LegendConfig struct {
 	// Border stroke color for the full legend.                                                                
 	StrokeColor                                                                               *string          `json:"strokeColor,omitempty"`
 	// Border stroke dash pattern for the full legend.                                                         
-	StrokeDash                                                                                []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                *[]float64       `json:"strokeDash,omitempty"`
 	// Border stroke width for the full legend.                                                                
 	StrokeWidth                                                                               *float64         `json:"strokeWidth,omitempty"`
 	// The color of the legend symbol,                                                                         
@@ -944,56 +944,56 @@ type PaddingClass struct {
 //
 // Any property of Projection can be in config
 type ProjectionConfig struct {
-	// Sets the projection’s center to the specified center, a two-element array of longitude                              
-	// and latitude in degrees.                                                                                            
-	//                                                                                                                     
-	// __Default value:__ `[0, 0]`                                                                                         
-	Center                                                                                     []float64                   `json:"center,omitempty"`
-	// Sets the projection’s clipping circle radius to the specified angle in degrees. If                                  
-	// `null`, switches to [antimeridian](http://bl.ocks.org/mbostock/3788999) cutting rather                              
-	// than small-circle clipping.                                                                                         
-	ClipAngle                                                                                  *float64                    `json:"clipAngle,omitempty"`
-	// Sets the projection’s viewport clip extent to the specified bounds in pixels. The extent                            
-	// bounds are specified as an array `[[x0, y0], [x1, y1]]`, where `x0` is the left-side of                             
-	// the viewport, `y0` is the top, `x1` is the right and `y1` is the bottom. If `null`, no                              
-	// viewport clipping is performed.                                                                                     
-	ClipExtent                                                                                 [][]float64                 `json:"clipExtent,omitempty"`
-	Coefficient                                                                                *float64                    `json:"coefficient,omitempty"`
-	Distance                                                                                   *float64                    `json:"distance,omitempty"`
-	Fraction                                                                                   *float64                    `json:"fraction,omitempty"`
-	Lobes                                                                                      *float64                    `json:"lobes,omitempty"`
-	Parallel                                                                                   *float64                    `json:"parallel,omitempty"`
-	// Sets the threshold for the projection’s [adaptive                                                                   
-	// resampling](http://bl.ocks.org/mbostock/3795544) to the specified value in pixels. This                             
-	// value corresponds to the [Douglas–Peucker                                                                           
-	// distance](http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm).                            
-	// If precision is not specified, returns the projection’s current resampling precision                                
-	// which defaults to `√0.5 ≅ 0.70710…`.                                                                                
-	Precision                                                                                  map[string]*TitleFontWeight `json:"precision,omitempty"`
-	Radius                                                                                     *float64                    `json:"radius,omitempty"`
-	Ratio                                                                                      *float64                    `json:"ratio,omitempty"`
-	// Sets the projection’s three-axis rotation to the specified angles, which must be a two-                             
-	// or three-element array of numbers [`lambda`, `phi`, `gamma`] specifying the rotation                                
-	// angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.)                             
-	//                                                                                                                     
-	// __Default value:__ `[0, 0, 0]`                                                                                      
-	Rotate                                                                                     []float64                   `json:"rotate,omitempty"`
-	Spacing                                                                                    *float64                    `json:"spacing,omitempty"`
-	Tilt                                                                                       *float64                    `json:"tilt,omitempty"`
-	// The cartographic projection to use. This value is case-insensitive, for example                                     
-	// `"albers"` and `"Albers"` indicate the same projection type. You can find all valid                                 
-	// projection types [in the                                                                                            
-	// documentation](https://vega.github.io/vega-lite/docs/projection.html#projection-types).                             
-	//                                                                                                                     
-	// __Default value:__ `mercator`                                                                                       
-	Type                                                                                       *VGProjectionType           `json:"type,omitempty"`
+	// Sets the projection’s center to the specified center, a two-element array of longitude                               
+	// and latitude in degrees.                                                                                             
+	//                                                                                                                      
+	// __Default value:__ `[0, 0]`                                                                                          
+	Center                                                                                     *[]float64                   `json:"center,omitempty"`
+	// Sets the projection’s clipping circle radius to the specified angle in degrees. If                                   
+	// `null`, switches to [antimeridian](http://bl.ocks.org/mbostock/3788999) cutting rather                               
+	// than small-circle clipping.                                                                                          
+	ClipAngle                                                                                  *float64                     `json:"clipAngle,omitempty"`
+	// Sets the projection’s viewport clip extent to the specified bounds in pixels. The extent                             
+	// bounds are specified as an array `[[x0, y0], [x1, y1]]`, where `x0` is the left-side of                              
+	// the viewport, `y0` is the top, `x1` is the right and `y1` is the bottom. If `null`, no                               
+	// viewport clipping is performed.                                                                                      
+	ClipExtent                                                                                 *[][]float64                 `json:"clipExtent,omitempty"`
+	Coefficient                                                                                *float64                     `json:"coefficient,omitempty"`
+	Distance                                                                                   *float64                     `json:"distance,omitempty"`
+	Fraction                                                                                   *float64                     `json:"fraction,omitempty"`
+	Lobes                                                                                      *float64                     `json:"lobes,omitempty"`
+	Parallel                                                                                   *float64                     `json:"parallel,omitempty"`
+	// Sets the threshold for the projection’s [adaptive                                                                    
+	// resampling](http://bl.ocks.org/mbostock/3795544) to the specified value in pixels. This                              
+	// value corresponds to the [Douglas–Peucker                                                                            
+	// distance](http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm).                             
+	// If precision is not specified, returns the projection’s current resampling precision                                 
+	// which defaults to `√0.5 ≅ 0.70710…`.                                                                                 
+	Precision                                                                                  *map[string]*TitleFontWeight `json:"precision,omitempty"`
+	Radius                                                                                     *float64                     `json:"radius,omitempty"`
+	Ratio                                                                                      *float64                     `json:"ratio,omitempty"`
+	// Sets the projection’s three-axis rotation to the specified angles, which must be a two-                              
+	// or three-element array of numbers [`lambda`, `phi`, `gamma`] specifying the rotation                                 
+	// angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.)                              
+	//                                                                                                                      
+	// __Default value:__ `[0, 0, 0]`                                                                                       
+	Rotate                                                                                     *[]float64                   `json:"rotate,omitempty"`
+	Spacing                                                                                    *float64                     `json:"spacing,omitempty"`
+	Tilt                                                                                       *float64                     `json:"tilt,omitempty"`
+	// The cartographic projection to use. This value is case-insensitive, for example                                      
+	// `"albers"` and `"Albers"` indicate the same projection type. You can find all valid                                  
+	// projection types [in the                                                                                             
+	// documentation](https://vega.github.io/vega-lite/docs/projection.html#projection-types).                              
+	//                                                                                                                      
+	// __Default value:__ `mercator`                                                                                        
+	Type                                                                                       *VGProjectionType            `json:"type,omitempty"`
 }
 
 type VGScheme struct {
-	Count  *float64  `json:"count,omitempty"`
-	Extent []float64 `json:"extent,omitempty"`
-	Scheme *string   `json:"scheme,omitempty"`
-	Step   *float64  `json:"step,omitempty"`
+	Count  *float64   `json:"count,omitempty"`
+	Extent *[]float64 `json:"extent,omitempty"`
+	Scheme *string    `json:"scheme,omitempty"`
+	Step   *float64   `json:"step,omitempty"`
 }
 
 // Scale configuration determines default properties for all [scales](scale.html). For a
@@ -1128,10 +1128,10 @@ type IntervalSelectionConfig struct {
 	Empty                                                                               *Empty               `json:"empty,omitempty"`
 	// An array of encoding channels. The corresponding data field values                                    
 	// must match for a data tuple to fall within the selection.                                             
-	Encodings                                                                           []SingleDefChannel   `json:"encodings,omitempty"`
+	Encodings                                                                           *[]SingleDefChannel  `json:"encodings,omitempty"`
 	// An array of field names whose values must match for a data tuple to                                   
 	// fall within the selection.                                                                            
-	Fields                                                                              []string             `json:"fields,omitempty"`
+	Fields                                                                              *[]string            `json:"fields,omitempty"`
 	// An interval selection also adds a rectangle mark to depict the                                        
 	// extents of the interval. The `mark` property can be used to customize the                             
 	// appearance of the mark.                                                                               
@@ -1168,27 +1168,27 @@ type IntervalSelectionConfig struct {
 // extents of the interval. The `mark` property can be used to customize the
 // appearance of the mark.
 type BrushConfig struct {
-	// The fill color of the interval mark.                                               
-	//                                                                                    
-	// __Default value:__ `#333333`                                                       
-	Fill                                                                        *string   `json:"fill,omitempty"`
-	// The fill opacity of the interval mark (a value between 0 and 1).                   
-	//                                                                                    
-	// __Default value:__ `0.125`                                                         
-	FillOpacity                                                                 *float64  `json:"fillOpacity,omitempty"`
-	// The stroke color of the interval mark.                                             
-	//                                                                                    
-	// __Default value:__ `#ffffff`                                                       
-	Stroke                                                                      *string   `json:"stroke,omitempty"`
-	// An array of alternating stroke and space lengths,                                  
-	// for creating dashed or dotted lines.                                               
-	StrokeDash                                                                  []float64 `json:"strokeDash,omitempty"`
-	// The offset (in pixels) with which to begin drawing the stroke dash array.          
-	StrokeDashOffset                                                            *float64  `json:"strokeDashOffset,omitempty"`
-	// The stroke opacity of the interval mark (a value between 0 and 1).                 
-	StrokeOpacity                                                               *float64  `json:"strokeOpacity,omitempty"`
-	// The stroke width of the interval mark.                                             
-	StrokeWidth                                                                 *float64  `json:"strokeWidth,omitempty"`
+	// The fill color of the interval mark.                                                
+	//                                                                                     
+	// __Default value:__ `#333333`                                                        
+	Fill                                                                        *string    `json:"fill,omitempty"`
+	// The fill opacity of the interval mark (a value between 0 and 1).                    
+	//                                                                                     
+	// __Default value:__ `0.125`                                                          
+	FillOpacity                                                                 *float64   `json:"fillOpacity,omitempty"`
+	// The stroke color of the interval mark.                                              
+	//                                                                                     
+	// __Default value:__ `#ffffff`                                                        
+	Stroke                                                                      *string    `json:"stroke,omitempty"`
+	// An array of alternating stroke and space lengths,                                   
+	// for creating dashed or dotted lines.                                                
+	StrokeDash                                                                  *[]float64 `json:"strokeDash,omitempty"`
+	// The offset (in pixels) with which to begin drawing the stroke dash array.           
+	StrokeDashOffset                                                            *float64   `json:"strokeDashOffset,omitempty"`
+	// The stroke opacity of the interval mark (a value between 0 and 1).                  
+	StrokeOpacity                                                               *float64   `json:"strokeOpacity,omitempty"`
+	// The stroke width of the interval mark.                                              
+	StrokeWidth                                                                 *float64   `json:"strokeWidth,omitempty"`
 }
 
 // The default definition for a [`multi`](selection.html#type) selection. All properties and
@@ -1203,10 +1203,10 @@ type MultiSelectionConfig struct {
 	Empty                                                                               *Empty               `json:"empty,omitempty"`
 	// An array of encoding channels. The corresponding data field values                                    
 	// must match for a data tuple to fall within the selection.                                             
-	Encodings                                                                           []SingleDefChannel   `json:"encodings,omitempty"`
+	Encodings                                                                           *[]SingleDefChannel  `json:"encodings,omitempty"`
 	// An array of field names whose values must match for a data tuple to                                   
 	// fall within the selection.                                                                            
-	Fields                                                                              []string             `json:"fields,omitempty"`
+	Fields                                                                              *[]string            `json:"fields,omitempty"`
 	// When true, an invisible voronoi diagram is computed to accelerate discrete                            
 	// selection. The data value _nearest_ the mouse cursor is added to the selection.                       
 	//                                                                                                       
@@ -1239,45 +1239,45 @@ type MultiSelectionConfig struct {
 // For instance, setting `single` to `{"on": "dblclick"}` populates single selections on
 // double-click by default.
 type SingleSelectionConfig struct {
-	// Establish a two-way binding between a single selection and input elements                                     
-	// (also known as dynamic query widgets). A binding takes the form of                                            
-	// Vega's [input element binding definition](https://vega.github.io/vega/docs/signals/#bind)                     
-	// or can be a mapping between projected field/encodings and binding definitions.                                
-	//                                                                                                               
-	// See the [bind transform](bind.html) documentation for more information.                                       
-	Bind                                                                                        map[string]VGBinding `json:"bind,omitempty"`
-	// By default, all data values are considered to lie within an empty selection.                                  
-	// When set to `none`, empty selections contain no data values.                                                  
-	Empty                                                                                       *Empty               `json:"empty,omitempty"`
-	// An array of encoding channels. The corresponding data field values                                            
-	// must match for a data tuple to fall within the selection.                                                     
-	Encodings                                                                                   []SingleDefChannel   `json:"encodings,omitempty"`
-	// An array of field names whose values must match for a data tuple to                                           
-	// fall within the selection.                                                                                    
-	Fields                                                                                      []string             `json:"fields,omitempty"`
-	// When true, an invisible voronoi diagram is computed to accelerate discrete                                    
-	// selection. The data value _nearest_ the mouse cursor is added to the selection.                               
-	//                                                                                                               
-	// See the [nearest transform](nearest.html) documentation for more information.                                 
-	Nearest                                                                                     *bool                `json:"nearest,omitempty"`
-	// A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or                             
-	// selector) that triggers the selection.                                                                        
-	// For interval selections, the event stream must specify a [start and                                           
-	// end](https://vega.github.io/vega/docs/event-streams/#between-filters).                                        
-	On                                                                                          interface{}          `json:"on"`
-	// With layered and multi-view displays, a strategy that determines how                                          
-	// selections' data queries are resolved when applied in a filter transform,                                     
-	// conditional encoding rule, or scale domain.                                                                   
-	Resolve                                                                                     *SelectionResolution `json:"resolve,omitempty"`
+	// Establish a two-way binding between a single selection and input elements                                      
+	// (also known as dynamic query widgets). A binding takes the form of                                             
+	// Vega's [input element binding definition](https://vega.github.io/vega/docs/signals/#bind)                      
+	// or can be a mapping between projected field/encodings and binding definitions.                                 
+	//                                                                                                                
+	// See the [bind transform](bind.html) documentation for more information.                                        
+	Bind                                                                                        *map[string]VGBinding `json:"bind,omitempty"`
+	// By default, all data values are considered to lie within an empty selection.                                   
+	// When set to `none`, empty selections contain no data values.                                                   
+	Empty                                                                                       *Empty                `json:"empty,omitempty"`
+	// An array of encoding channels. The corresponding data field values                                             
+	// must match for a data tuple to fall within the selection.                                                      
+	Encodings                                                                                   *[]SingleDefChannel   `json:"encodings,omitempty"`
+	// An array of field names whose values must match for a data tuple to                                            
+	// fall within the selection.                                                                                     
+	Fields                                                                                      *[]string             `json:"fields,omitempty"`
+	// When true, an invisible voronoi diagram is computed to accelerate discrete                                     
+	// selection. The data value _nearest_ the mouse cursor is added to the selection.                                
+	//                                                                                                                
+	// See the [nearest transform](nearest.html) documentation for more information.                                  
+	Nearest                                                                                     *bool                 `json:"nearest,omitempty"`
+	// A [Vega event stream](https://vega.github.io/vega/docs/event-streams/) (object or                              
+	// selector) that triggers the selection.                                                                         
+	// For interval selections, the event stream must specify a [start and                                            
+	// end](https://vega.github.io/vega/docs/event-streams/#between-filters).                                         
+	On                                                                                          interface{}           `json:"on"`
+	// With layered and multi-view displays, a strategy that determines how                                           
+	// selections' data queries are resolved when applied in a filter transform,                                      
+	// conditional encoding rule, or scale domain.                                                                    
+	Resolve                                                                                     *SelectionResolution  `json:"resolve,omitempty"`
 }
 
 type VGBinding struct {
-	Element *string  `json:"element,omitempty"`
-	Input   string   `json:"input"`
-	Options []string `json:"options,omitempty"`
-	Max     *float64 `json:"max,omitempty"`
-	Min     *float64 `json:"min,omitempty"`
-	Step    *float64 `json:"step,omitempty"`
+	Element *string   `json:"element,omitempty"`
+	Input   string    `json:"input"`
+	Options *[]string `json:"options,omitempty"`
+	Max     *float64  `json:"max,omitempty"`
+	Min     *float64  `json:"min,omitempty"`
+	Step    *float64  `json:"step,omitempty"`
 }
 
 type VGMarkConfig struct {
@@ -1372,7 +1372,7 @@ type VGMarkConfig struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -1502,7 +1502,7 @@ type TextConfig struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -1634,7 +1634,7 @@ type TickConfig struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -1697,47 +1697,47 @@ type VGTitleConfig struct {
 
 // Default properties for [single view plots](spec.html#single).
 type ViewConfig struct {
-	// Whether the view should be clipped.                                                               
-	Clip                                                                                       *bool     `json:"clip,omitempty"`
-	// The fill color.                                                                                   
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	Fill                                                                                       *string   `json:"fill,omitempty"`
-	// The fill opacity (value between [0,1]).                                                           
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	FillOpacity                                                                                *float64  `json:"fillOpacity,omitempty"`
-	// The default height of the single plot or each plot in a trellis plot when the                     
-	// visualization has a continuous (non-ordinal) y-scale with `rangeStep` = `null`.                   
-	//                                                                                                   
-	// __Default value:__ `200`                                                                          
-	Height                                                                                     *float64  `json:"height,omitempty"`
-	// The stroke color.                                                                                 
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	Stroke                                                                                     *string   `json:"stroke,omitempty"`
-	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	StrokeDash                                                                                 []float64 `json:"strokeDash,omitempty"`
-	// The offset (in pixels) into which to begin drawing with the stroke dash array.                    
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	StrokeDashOffset                                                                           *float64  `json:"strokeDashOffset,omitempty"`
-	// The stroke opacity (value between [0,1]).                                                         
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	StrokeOpacity                                                                              *float64  `json:"strokeOpacity,omitempty"`
-	// The stroke width, in pixels.                                                                      
-	//                                                                                                   
-	// __Default value:__ (none)                                                                         
-	StrokeWidth                                                                                *float64  `json:"strokeWidth,omitempty"`
-	// The default width of the single plot or each plot in a trellis plot when the                      
-	// visualization has a continuous (non-ordinal) x-scale or ordinal x-scale with `rangeStep`          
-	// = `null`.                                                                                         
-	//                                                                                                   
-	// __Default value:__ `200`                                                                          
-	Width                                                                                      *float64  `json:"width,omitempty"`
+	// Whether the view should be clipped.                                                                
+	Clip                                                                                       *bool      `json:"clip,omitempty"`
+	// The fill color.                                                                                    
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	Fill                                                                                       *string    `json:"fill,omitempty"`
+	// The fill opacity (value between [0,1]).                                                            
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	FillOpacity                                                                                *float64   `json:"fillOpacity,omitempty"`
+	// The default height of the single plot or each plot in a trellis plot when the                      
+	// visualization has a continuous (non-ordinal) y-scale with `rangeStep` = `null`.                    
+	//                                                                                                    
+	// __Default value:__ `200`                                                                           
+	Height                                                                                     *float64   `json:"height,omitempty"`
+	// The stroke color.                                                                                  
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	Stroke                                                                                     *string    `json:"stroke,omitempty"`
+	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                 
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	StrokeDash                                                                                 *[]float64 `json:"strokeDash,omitempty"`
+	// The offset (in pixels) into which to begin drawing with the stroke dash array.                     
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	StrokeDashOffset                                                                           *float64   `json:"strokeDashOffset,omitempty"`
+	// The stroke opacity (value between [0,1]).                                                          
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	StrokeOpacity                                                                              *float64   `json:"strokeOpacity,omitempty"`
+	// The stroke width, in pixels.                                                                       
+	//                                                                                                    
+	// __Default value:__ (none)                                                                          
+	StrokeWidth                                                                                *float64   `json:"strokeWidth,omitempty"`
+	// The default width of the single plot or each plot in a trellis plot when the                       
+	// visualization has a continuous (non-ordinal) x-scale or ordinal x-scale with `rangeStep`           
+	// = `null`.                                                                                          
+	//                                                                                                    
+	// __Default value:__ `200`                                                                           
+	Width                                                                                      *float64   `json:"width,omitempty"`
 }
 
 // An object describing the data source
@@ -1975,35 +1975,35 @@ type MarkPropDefWithCondition struct {
 
 // Binning properties or boolean flag for determining whether to bin data or not.
 type BinParams struct {
-	// The number base to use for automatic bin determination (default is base 10).                       
-	//                                                                                                    
-	// __Default value:__ `10`                                                                            
-	Base                                                                                        *float64  `json:"base,omitempty"`
-	// Scale factors indicating allowable subdivisions. The default value is [5, 2], which                
-	// indicates that for base 10 numbers (the default base), the method may consider dividing            
-	// bin sizes by 5 and/or 2. For example, for an initial step size of 10, the method can               
-	// check if bin sizes of 2 (= 10/5), 5 (= 10/2), or 1 (= 10/(5*2)) might also satisfy the             
-	// given constraints.                                                                                 
-	//                                                                                                    
-	// __Default value:__ `[5, 2]`                                                                        
-	Divide                                                                                      []float64 `json:"divide,omitempty"`
-	// A two-element (`[min, max]`) array indicating the range of desired bin values.                     
-	Extent                                                                                      []float64 `json:"extent,omitempty"`
-	// Maximum number of bins.                                                                            
-	//                                                                                                    
-	// __Default value:__ `6` for `row`, `column` and `shape` channels; `10` for other channels           
-	Maxbins                                                                                     *float64  `json:"maxbins,omitempty"`
-	// A minimum allowable step size (particularly useful for integer values).                            
-	Minstep                                                                                     *float64  `json:"minstep,omitempty"`
-	// If true (the default), attempts to make the bin boundaries use human-friendly boundaries,          
-	// such as multiples of ten.                                                                          
-	Nice                                                                                        *bool     `json:"nice,omitempty"`
-	// An exact step size to use between bins.                                                            
-	//                                                                                                    
-	// __Note:__ If provided, options such as maxbins will be ignored.                                    
-	Step                                                                                        *float64  `json:"step,omitempty"`
-	// An array of allowable step sizes to choose from.                                                   
-	Steps                                                                                       []float64 `json:"steps,omitempty"`
+	// The number base to use for automatic bin determination (default is base 10).                        
+	//                                                                                                     
+	// __Default value:__ `10`                                                                             
+	Base                                                                                        *float64   `json:"base,omitempty"`
+	// Scale factors indicating allowable subdivisions. The default value is [5, 2], which                 
+	// indicates that for base 10 numbers (the default base), the method may consider dividing             
+	// bin sizes by 5 and/or 2. For example, for an initial step size of 10, the method can                
+	// check if bin sizes of 2 (= 10/5), 5 (= 10/2), or 1 (= 10/(5*2)) might also satisfy the              
+	// given constraints.                                                                                  
+	//                                                                                                     
+	// __Default value:__ `[5, 2]`                                                                         
+	Divide                                                                                      *[]float64 `json:"divide,omitempty"`
+	// A two-element (`[min, max]`) array indicating the range of desired bin values.                      
+	Extent                                                                                      *[]float64 `json:"extent,omitempty"`
+	// Maximum number of bins.                                                                             
+	//                                                                                                     
+	// __Default value:__ `6` for `row`, `column` and `shape` channels; `10` for other channels            
+	Maxbins                                                                                     *float64   `json:"maxbins,omitempty"`
+	// A minimum allowable step size (particularly useful for integer values).                             
+	Minstep                                                                                     *float64   `json:"minstep,omitempty"`
+	// If true (the default), attempts to make the bin boundaries use human-friendly boundaries,           
+	// such as multiples of ten.                                                                           
+	Nice                                                                                        *bool      `json:"nice,omitempty"`
+	// An exact step size to use between bins.                                                             
+	//                                                                                                     
+	// __Note:__ If provided, options such as maxbins will be ignored.                                     
+	Step                                                                                        *float64   `json:"step,omitempty"`
+	// An array of allowable step sizes to choose from.                                                    
+	Steps                                                                                       *[]float64 `json:"steps,omitempty"`
 }
 
 type ConditionalValueDef struct {
@@ -2017,33 +2017,33 @@ type ConditionalValueDef struct {
 }
 
 type Selection struct {
-	Not *SelectionOperand  `json:"not"`
-	And []SelectionOperand `json:"and,omitempty"`
-	Or  []SelectionOperand `json:"or,omitempty"`
+	Not *SelectionOperand   `json:"not"`
+	And *[]SelectionOperand `json:"and,omitempty"`
+	Or  *[]SelectionOperand `json:"or,omitempty"`
 }
 
 type Predicate struct {
-	Not                                                                     *LogicalOperandPredicate  `json:"not"`
-	And                                                                     []LogicalOperandPredicate `json:"and,omitempty"`
-	Or                                                                      []LogicalOperandPredicate `json:"or,omitempty"`
-	// The value that the field should be equal to.                                                   
-	Equal                                                                   *Equal                    `json:"equal"`
-	// Field to be filtered.                                                                          
-	//                                                                                                
-	// Field to be filtered                                                                           
-	Field                                                                   *string                   `json:"field,omitempty"`
-	// Time unit for the field to be filtered.                                                        
-	//                                                                                                
-	// time unit for the field to be filtered.                                                        
-	TimeUnit                                                                *TimeUnit                 `json:"timeUnit,omitempty"`
-	// An array of inclusive minimum and maximum values                                               
-	// for a field value of a data item to be included in the filtered data.                          
-	Range                                                                   []RangeElement            `json:"range,omitempty"`
-	// A set of values that the `field`'s value should be a member of,                                
-	// for a data item included in the filtered data.                                                 
-	OneOf                                                                   []Equal                   `json:"oneOf,omitempty"`
-	// Filter using a selection name.                                                                 
-	Selection                                                               *SelectionOperand         `json:"selection"`
+	Not                                                                     *LogicalOperandPredicate   `json:"not"`
+	And                                                                     *[]LogicalOperandPredicate `json:"and,omitempty"`
+	Or                                                                      *[]LogicalOperandPredicate `json:"or,omitempty"`
+	// The value that the field should be equal to.                                                    
+	Equal                                                                   *Equal                     `json:"equal"`
+	// Field to be filtered.                                                                           
+	//                                                                                                 
+	// Field to be filtered                                                                            
+	Field                                                                   *string                    `json:"field,omitempty"`
+	// Time unit for the field to be filtered.                                                         
+	//                                                                                                 
+	// time unit for the field to be filtered.                                                         
+	TimeUnit                                                                *TimeUnit                  `json:"timeUnit,omitempty"`
+	// An array of inclusive minimum and maximum values                                                
+	// for a field value of a data item to be included in the filtered data.                           
+	Range                                                                   *[]RangeElement            `json:"range,omitempty"`
+	// A set of values that the `field`'s value should be a member of,                                 
+	// for a data item included in the filtered data.                                                  
+	OneOf                                                                   *[]Equal                   `json:"oneOf,omitempty"`
+	// Filter using a selection name.                                                                  
+	Selection                                                               *SelectionOperand          `json:"selection"`
 }
 
 // Object for defining datetime in Vega-Lite Filter.
@@ -2147,58 +2147,58 @@ type RepeatRef struct {
 
 // Properties of a legend or boolean flag for determining whether to show it.
 type Legend struct {
-	// Padding (in pixels) between legend entries in a symbol legend.                                         
-	EntryPadding                                                                                *float64      `json:"entryPadding,omitempty"`
-	// The formatting pattern for labels. This is D3's [number format                                         
-	// pattern](https://github.com/d3/d3-format#locale_format) for quantitative fields and D3's               
-	// [time format pattern](https://github.com/d3/d3-time-format#locale_format) for time                     
-	// field.                                                                                                 
-	//                                                                                                        
-	// See the [format documentation](format.html) for more information.                                      
-	//                                                                                                        
-	// __Default value:__  derived from [numberFormat](config.html#format) config for                         
-	// quantitative fields and from [timeFormat](config.html#format) config for temporal fields.              
-	Format                                                                                      *string       `json:"format,omitempty"`
-	// The offset, in pixels, by which to displace the legend from the edge of the enclosing                  
-	// group or data rectangle.                                                                               
-	//                                                                                                        
-	// __Default value:__  `0`                                                                                
-	Offset                                                                                      *float64      `json:"offset,omitempty"`
-	// The orientation of the legend, which determines how the legend is positioned within the                
-	// scene. One of "left", "right", "top-left", "top-right", "bottom-left", "bottom-right",                 
-	// "none".                                                                                                
-	//                                                                                                        
-	// __Default value:__ `"right"`                                                                           
-	Orient                                                                                      *LegendOrient `json:"orient,omitempty"`
-	// The padding, in pixels, between the legend and axis.                                                   
-	Padding                                                                                     *float64      `json:"padding,omitempty"`
-	// The desired number of tick values for quantitative legends.                                            
-	TickCount                                                                                   *float64      `json:"tickCount,omitempty"`
-	// A title for the field. If `null`, the title will be removed.                                           
-	//                                                                                                        
-	// __Default value:__  derived from the field's name and transformation function                          
-	// (`aggregate`, `bin` and `timeUnit`).  If the field has an aggregate function, the                      
-	// function is displayed as a part of the title (e.g., `"Sum of Profit"`). If the field is                
-	// binned or has a time unit applied, the applied function will be denoted in parentheses                 
-	// (e.g., `"Profit (binned)"`, `"Transaction Date (year-month)"`).  Otherwise, the title is               
-	// simply the field name.                                                                                 
-	//                                                                                                        
-	// __Note__: You can customize the default field title format by providing the [`fieldTitle`              
-	// property in the [config](config.html) or [`fieldTitle` function via the `compile`                      
-	// function's options](compile.html#field-title).                                                         
-	Title                                                                                       *string       `json:"title"`
-	// The type of the legend. Use `"symbol"` to create a discrete legend and `"gradient"` for a              
-	// continuous color gradient.                                                                             
-	//                                                                                                        
-	// __Default value:__ `"gradient"` for non-binned quantitative fields and temporal fields;                
-	// `"symbol"` otherwise.                                                                                  
-	Type                                                                                        *LegendType   `json:"type,omitempty"`
-	// Explicitly set the visible legend values.                                                              
-	Values                                                                                      []LegendValue `json:"values,omitempty"`
-	// A non-positive integer indicating z-index of the legend.                                               
-	// If zindex is 0, legend should be drawn behind all chart elements.                                      
-	// To put them in front, use zindex = 1.                                                                  
-	Zindex                                                                                      *float64      `json:"zindex,omitempty"`
+	// Padding (in pixels) between legend entries in a symbol legend.                                          
+	EntryPadding                                                                                *float64       `json:"entryPadding,omitempty"`
+	// The formatting pattern for labels. This is D3's [number format                                          
+	// pattern](https://github.com/d3/d3-format#locale_format) for quantitative fields and D3's                
+	// [time format pattern](https://github.com/d3/d3-time-format#locale_format) for time                      
+	// field.                                                                                                  
+	//                                                                                                         
+	// See the [format documentation](format.html) for more information.                                       
+	//                                                                                                         
+	// __Default value:__  derived from [numberFormat](config.html#format) config for                          
+	// quantitative fields and from [timeFormat](config.html#format) config for temporal fields.               
+	Format                                                                                      *string        `json:"format,omitempty"`
+	// The offset, in pixels, by which to displace the legend from the edge of the enclosing                   
+	// group or data rectangle.                                                                                
+	//                                                                                                         
+	// __Default value:__  `0`                                                                                 
+	Offset                                                                                      *float64       `json:"offset,omitempty"`
+	// The orientation of the legend, which determines how the legend is positioned within the                 
+	// scene. One of "left", "right", "top-left", "top-right", "bottom-left", "bottom-right",                  
+	// "none".                                                                                                 
+	//                                                                                                         
+	// __Default value:__ `"right"`                                                                            
+	Orient                                                                                      *LegendOrient  `json:"orient,omitempty"`
+	// The padding, in pixels, between the legend and axis.                                                    
+	Padding                                                                                     *float64       `json:"padding,omitempty"`
+	// The desired number of tick values for quantitative legends.                                             
+	TickCount                                                                                   *float64       `json:"tickCount,omitempty"`
+	// A title for the field. If `null`, the title will be removed.                                            
+	//                                                                                                         
+	// __Default value:__  derived from the field's name and transformation function                           
+	// (`aggregate`, `bin` and `timeUnit`).  If the field has an aggregate function, the                       
+	// function is displayed as a part of the title (e.g., `"Sum of Profit"`). If the field is                 
+	// binned or has a time unit applied, the applied function will be denoted in parentheses                  
+	// (e.g., `"Profit (binned)"`, `"Transaction Date (year-month)"`).  Otherwise, the title is                
+	// simply the field name.                                                                                  
+	//                                                                                                         
+	// __Note__: You can customize the default field title format by providing the [`fieldTitle`               
+	// property in the [config](config.html) or [`fieldTitle` function via the `compile`                       
+	// function's options](compile.html#field-title).                                                          
+	Title                                                                                       *string        `json:"title"`
+	// The type of the legend. Use `"symbol"` to create a discrete legend and `"gradient"` for a               
+	// continuous color gradient.                                                                              
+	//                                                                                                         
+	// __Default value:__ `"gradient"` for non-binned quantitative fields and temporal fields;                 
+	// `"symbol"` otherwise.                                                                                   
+	Type                                                                                        *LegendType    `json:"type,omitempty"`
+	// Explicitly set the visible legend values.                                                               
+	Values                                                                                      *[]LegendValue `json:"values,omitempty"`
+	// A non-positive integer indicating z-index of the legend.                                                
+	// If zindex is 0, legend should be drawn behind all chart elements.                                       
+	// To put them in front, use zindex = 1.                                                                   
+	Zindex                                                                                      *float64       `json:"zindex,omitempty"`
 }
 
 // An object defining properties of the channel's scale, which is the function that
@@ -2401,15 +2401,15 @@ type NiceClass struct {
 }
 
 type SchemeParams struct {
-	// For sequential and diverging schemes only, determines the extent of the color range to            
-	// use. For example `[0.2, 1]` will rescale the color scheme such that color values in the           
-	// range _[0, 0.2)_ are excluded from the scheme.                                                    
-	Extent                                                                                     []float64 `json:"extent,omitempty"`
-	// A color scheme name for sequential/ordinal scales (e.g., `"category10"` or `"viridis"`).          
-	//                                                                                                   
-	// For the full list of supported scheme, please refer to the [Vega                                  
-	// Scheme](https://vega.github.io/vega/docs/schemes/#reference) reference.                           
-	Name                                                                                       string    `json:"name"`
+	// For sequential and diverging schemes only, determines the extent of the color range to             
+	// use. For example `[0.2, 1]` will rescale the color scheme such that color values in the            
+	// range _[0, 0.2)_ are excluded from the scheme.                                                     
+	Extent                                                                                     *[]float64 `json:"extent,omitempty"`
+	// A color scheme name for sequential/ordinal scales (e.g., `"category10"` or `"viridis"`).           
+	//                                                                                                    
+	// For the full list of supported scheme, please refer to the [Vega                                   
+	// Scheme](https://vega.github.io/vega/docs/schemes/#reference) reference.                            
+	Name                                                                                       string     `json:"name"`
 }
 
 type SortField struct {
@@ -2985,7 +2985,7 @@ type Axis struct {
 	// The padding, in pixels, between title and axis.                                                             
 	TitlePadding                                                                                *float64           `json:"titlePadding,omitempty"`
 	// Explicitly set the visible axis tick values.                                                                
-	Values                                                                                      []AxisValue        `json:"values,omitempty"`
+	Values                                                                                      *[]AxisValue       `json:"values,omitempty"`
 	// A non-positive integer indicating z-index of the axis.                                                      
 	// If zindex is 0, axes should be drawn behind all chart elements.                                             
 	// To put them in front, use `"zindex = 1"`.                                                                   
@@ -3051,96 +3051,96 @@ type FacetMapping struct {
 
 // Unit spec that can have a composite mark.
 type Spec struct {
-	// An object describing the data source                                                                             
-	Data                                                                                        *Data                   `json:"data,omitempty"`
-	// Description of this mark for commenting purpose.                                                                 
-	Description                                                                                 *string                 `json:"description,omitempty"`
-	// The height of a visualization.                                                                                   
-	//                                                                                                                  
-	// __Default value:__                                                                                               
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                            
-	// [continuous scale](scale.html#continuous), the height will be the value of                                       
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the height is [determined by the range step, paddings, and the                             
-	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                
-	// `rangeStep` is `null`, the height will be the value of                                                           
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                           
-	//                                                                                                                  
-	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the height of a single view.                                                                          
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Height                                                                                      *float64                `json:"height,omitempty"`
-	// Layer or single view specifications to be layered.                                                               
-	//                                                                                                                  
-	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                
-	// layering facet specifications is not allowed.                                                                    
-	Layer                                                                                       []LayerSpec             `json:"layer,omitempty"`
-	// Name of the visualization for later reference.                                                                   
-	Name                                                                                        *string                 `json:"name,omitempty"`
-	// Scale, axis, and legend resolutions for layers.                                                                  
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for facets.                                                                  
-	//                                                                                                                  
-	// Scale and legend resolutions for repeated charts.                                                                
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for vertically concatenated charts.                                          
-	//                                                                                                                  
-	// Scale, axis, and legend resolutions for horizontally concatenated charts.                                        
-	Resolve                                                                                     *Resolve                `json:"resolve,omitempty"`
-	// Title for the plot.                                                                                              
-	Title                                                                                       *Title                  `json:"title"`
-	// An array of data transformations such as filter and new field calculation.                                       
-	Transform                                                                                   []Transform             `json:"transform,omitempty"`
-	// The width of a visualization.                                                                                    
-	//                                                                                                                  
-	// __Default value:__ This will be determined by the following rules:                                               
-	//                                                                                                                  
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                            
-	// [continuous scale](scale.html#continuous), the width will be the value of                                        
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the width is [determined by the range step, paddings, and the                              
-	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                              
-	// `rangeStep` is `null`, the width will be the value of                                                            
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - If no field is mapped to `x` channel, the `width` will be the value of                                         
-	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                          
-	// the value of `rangeStep` for other marks.                                                                        
-	//                                                                                                                  
-	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the width of a single view.                                                                           
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Width                                                                                       *float64                `json:"width,omitempty"`
-	// A key-value mapping between encoding channels and definition of fields.                                          
-	Encoding                                                                                    *Encoding               `json:"encoding,omitempty"`
-	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                             
-	// `"line"`,                                                                                                        
-	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                               
-	// object](mark.html#mark-def).                                                                                     
-	Mark                                                                                        *AnyMark                `json:"mark"`
-	// An object defining properties of geographic projection.                                                          
-	//                                                                                                                  
-	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                        
-	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                  
-	Projection                                                                                  *Projection             `json:"projection,omitempty"`
-	// A key-value mapping between selection names and definitions.                                                     
-	Selection                                                                                   map[string]SelectionDef `json:"selection,omitempty"`
-	// An object that describes mappings between `row` and `column` channels and their field                            
-	// definitions.                                                                                                     
-	Facet                                                                                       *FacetMapping           `json:"facet,omitempty"`
-	// A specification of the view that gets faceted.                                                                   
-	Spec                                                                                        *Spec                   `json:"spec,omitempty"`
-	// An object that describes what fields should be repeated into views that are laid out as a                        
-	// `row` or `column`.                                                                                               
-	Repeat                                                                                      *Repeat                 `json:"repeat,omitempty"`
-	// A list of views that should be concatenated and put into a column.                                               
-	Vconcat                                                                                     []Spec                  `json:"vconcat,omitempty"`
-	// A list of views that should be concatenated and put into a row.                                                  
-	Hconcat                                                                                     []Spec                  `json:"hconcat,omitempty"`
+	// An object describing the data source                                                                              
+	Data                                                                                        *Data                    `json:"data,omitempty"`
+	// Description of this mark for commenting purpose.                                                                  
+	Description                                                                                 *string                  `json:"description,omitempty"`
+	// The height of a visualization.                                                                                    
+	//                                                                                                                   
+	// __Default value:__                                                                                                
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                             
+	// [continuous scale](scale.html#continuous), the height will be the value of                                        
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the height is [determined by the range step, paddings, and the                              
+	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                 
+	// `rangeStep` is `null`, the height will be the value of                                                            
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                            
+	//                                                                                                                   
+	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the height of a single view.                                                                           
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Height                                                                                      *float64                 `json:"height,omitempty"`
+	// Layer or single view specifications to be layered.                                                                
+	//                                                                                                                   
+	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                 
+	// layering facet specifications is not allowed.                                                                     
+	Layer                                                                                       *[]LayerSpec             `json:"layer,omitempty"`
+	// Name of the visualization for later reference.                                                                    
+	Name                                                                                        *string                  `json:"name,omitempty"`
+	// Scale, axis, and legend resolutions for layers.                                                                   
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for facets.                                                                   
+	//                                                                                                                   
+	// Scale and legend resolutions for repeated charts.                                                                 
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for vertically concatenated charts.                                           
+	//                                                                                                                   
+	// Scale, axis, and legend resolutions for horizontally concatenated charts.                                         
+	Resolve                                                                                     *Resolve                 `json:"resolve,omitempty"`
+	// Title for the plot.                                                                                               
+	Title                                                                                       *Title                   `json:"title"`
+	// An array of data transformations such as filter and new field calculation.                                        
+	Transform                                                                                   *[]Transform             `json:"transform,omitempty"`
+	// The width of a visualization.                                                                                     
+	//                                                                                                                   
+	// __Default value:__ This will be determined by the following rules:                                                
+	//                                                                                                                   
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                             
+	// [continuous scale](scale.html#continuous), the width will be the value of                                         
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the width is [determined by the range step, paddings, and the                               
+	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                               
+	// `rangeStep` is `null`, the width will be the value of                                                             
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - If no field is mapped to `x` channel, the `width` will be the value of                                          
+	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                           
+	// the value of `rangeStep` for other marks.                                                                         
+	//                                                                                                                   
+	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the width of a single view.                                                                            
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Width                                                                                       *float64                 `json:"width,omitempty"`
+	// A key-value mapping between encoding channels and definition of fields.                                           
+	Encoding                                                                                    *Encoding                `json:"encoding,omitempty"`
+	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                              
+	// `"line"`,                                                                                                         
+	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                                
+	// object](mark.html#mark-def).                                                                                      
+	Mark                                                                                        *AnyMark                 `json:"mark"`
+	// An object defining properties of geographic projection.                                                           
+	//                                                                                                                   
+	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                         
+	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                   
+	Projection                                                                                  *Projection              `json:"projection,omitempty"`
+	// A key-value mapping between selection names and definitions.                                                      
+	Selection                                                                                   *map[string]SelectionDef `json:"selection,omitempty"`
+	// An object that describes mappings between `row` and `column` channels and their field                             
+	// definitions.                                                                                                      
+	Facet                                                                                       *FacetMapping            `json:"facet,omitempty"`
+	// A specification of the view that gets faceted.                                                                    
+	Spec                                                                                        *Spec                    `json:"spec,omitempty"`
+	// An object that describes what fields should be repeated into views that are laid out as a                         
+	// `row` or `column`.                                                                                                
+	Repeat                                                                                      *Repeat                  `json:"repeat,omitempty"`
+	// A list of views that should be concatenated and put into a column.                                                
+	Vconcat                                                                                     *[]Spec                  `json:"vconcat,omitempty"`
+	// A list of views that should be concatenated and put into a row.                                                   
+	Hconcat                                                                                     *[]Spec                  `json:"hconcat,omitempty"`
 }
 
 // A key-value mapping between encoding channels and definition of fields.
@@ -3201,76 +3201,76 @@ type Encoding struct {
 
 // Unit spec that can have a composite mark.
 type LayerSpec struct {
-	// An object describing the data source                                                                             
-	Data                                                                                        *Data                   `json:"data,omitempty"`
-	// Description of this mark for commenting purpose.                                                                 
-	Description                                                                                 *string                 `json:"description,omitempty"`
-	// The height of a visualization.                                                                                   
-	//                                                                                                                  
-	// __Default value:__                                                                                               
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                            
-	// [continuous scale](scale.html#continuous), the height will be the value of                                       
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the height is [determined by the range step, paddings, and the                             
-	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                
-	// `rangeStep` is `null`, the height will be the value of                                                           
-	// [`config.view.height`](spec.html#config).                                                                        
-	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                           
-	//                                                                                                                  
-	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the height of a single view.                                                                          
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Height                                                                                      *float64                `json:"height,omitempty"`
-	// Layer or single view specifications to be layered.                                                               
-	//                                                                                                                  
-	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                
-	// layering facet specifications is not allowed.                                                                    
-	Layer                                                                                       []LayerSpec             `json:"layer,omitempty"`
-	// Name of the visualization for later reference.                                                                   
-	Name                                                                                        *string                 `json:"name,omitempty"`
-	// Scale, axis, and legend resolutions for layers.                                                                  
-	Resolve                                                                                     *Resolve                `json:"resolve,omitempty"`
-	// Title for the plot.                                                                                              
-	Title                                                                                       *Title                  `json:"title"`
-	// An array of data transformations such as filter and new field calculation.                                       
-	Transform                                                                                   []Transform             `json:"transform,omitempty"`
-	// The width of a visualization.                                                                                    
-	//                                                                                                                  
-	// __Default value:__ This will be determined by the following rules:                                               
-	//                                                                                                                  
-	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                            
-	// [continuous scale](scale.html#continuous), the width will be the value of                                        
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                          
-	// value or unspecified, the width is [determined by the range step, paddings, and the                              
-	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                              
-	// `rangeStep` is `null`, the width will be the value of                                                            
-	// [`config.view.width`](spec.html#config).                                                                         
-	// - If no field is mapped to `x` channel, the `width` will be the value of                                         
-	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                          
-	// the value of `rangeStep` for other marks.                                                                        
-	//                                                                                                                  
-	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                
-	// represents the width of a single view.                                                                           
-	//                                                                                                                  
-	// __See also:__ The documentation for [width and height](size.html) contains more examples.                        
-	Width                                                                                       *float64                `json:"width,omitempty"`
-	// A key-value mapping between encoding channels and definition of fields.                                          
-	Encoding                                                                                    *Encoding               `json:"encoding,omitempty"`
-	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                             
-	// `"line"`,                                                                                                        
-	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                               
-	// object](mark.html#mark-def).                                                                                     
-	Mark                                                                                        *AnyMark                `json:"mark"`
-	// An object defining properties of geographic projection.                                                          
-	//                                                                                                                  
-	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                        
-	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                  
-	Projection                                                                                  *Projection             `json:"projection,omitempty"`
-	// A key-value mapping between selection names and definitions.                                                     
-	Selection                                                                                   map[string]SelectionDef `json:"selection,omitempty"`
+	// An object describing the data source                                                                              
+	Data                                                                                        *Data                    `json:"data,omitempty"`
+	// Description of this mark for commenting purpose.                                                                  
+	Description                                                                                 *string                  `json:"description,omitempty"`
+	// The height of a visualization.                                                                                    
+	//                                                                                                                   
+	// __Default value:__                                                                                                
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its y-channel has a                             
+	// [continuous scale](scale.html#continuous), the height will be the value of                                        
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - For y-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the height is [determined by the range step, paddings, and the                              
+	// cardinality of the field mapped to y-channel](scale.html#band). Otherwise, if the                                 
+	// `rangeStep` is `null`, the height will be the value of                                                            
+	// [`config.view.height`](spec.html#config).                                                                         
+	// - If no field is mapped to `y` channel, the `height` will be the value of `rangeStep`.                            
+	//                                                                                                                   
+	// __Note__: For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the height of a single view.                                                                           
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Height                                                                                      *float64                 `json:"height,omitempty"`
+	// Layer or single view specifications to be layered.                                                                
+	//                                                                                                                   
+	// __Note__: Specifications inside `layer` cannot use `row` and `column` channels as                                 
+	// layering facet specifications is not allowed.                                                                     
+	Layer                                                                                       *[]LayerSpec             `json:"layer,omitempty"`
+	// Name of the visualization for later reference.                                                                    
+	Name                                                                                        *string                  `json:"name,omitempty"`
+	// Scale, axis, and legend resolutions for layers.                                                                   
+	Resolve                                                                                     *Resolve                 `json:"resolve,omitempty"`
+	// Title for the plot.                                                                                               
+	Title                                                                                       *Title                   `json:"title"`
+	// An array of data transformations such as filter and new field calculation.                                        
+	Transform                                                                                   *[]Transform             `json:"transform,omitempty"`
+	// The width of a visualization.                                                                                     
+	//                                                                                                                   
+	// __Default value:__ This will be determined by the following rules:                                                
+	//                                                                                                                   
+	// - If a view's [`autosize`](size.html#autosize) type is `"fit"` or its x-channel has a                             
+	// [continuous scale](scale.html#continuous), the width will be the value of                                         
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - For x-axis with a band or point scale: if [`rangeStep`](scale.html#band) is a numeric                           
+	// value or unspecified, the width is [determined by the range step, paddings, and the                               
+	// cardinality of the field mapped to x-channel](scale.html#band).   Otherwise, if the                               
+	// `rangeStep` is `null`, the width will be the value of                                                             
+	// [`config.view.width`](spec.html#config).                                                                          
+	// - If no field is mapped to `x` channel, the `width` will be the value of                                          
+	// [`config.scale.textXRangeStep`](size.html#default-width-and-height) for `text` mark and                           
+	// the value of `rangeStep` for other marks.                                                                         
+	//                                                                                                                   
+	// __Note:__ For plots with [`row` and `column` channels](encoding.html#facet), this                                 
+	// represents the width of a single view.                                                                            
+	//                                                                                                                   
+	// __See also:__ The documentation for [width and height](size.html) contains more examples.                         
+	Width                                                                                       *float64                 `json:"width,omitempty"`
+	// A key-value mapping between encoding channels and definition of fields.                                           
+	Encoding                                                                                    *Encoding                `json:"encoding,omitempty"`
+	// A string describing the mark type (one of `"bar"`, `"circle"`, `"square"`, `"tick"`,                              
+	// `"line"`,                                                                                                         
+	// * `"area"`, `"point"`, `"rule"`, `"geoshape"`, and `"text"`) or a [mark definition                                
+	// object](mark.html#mark-def).                                                                                      
+	Mark                                                                                        *AnyMark                 `json:"mark"`
+	// An object defining properties of geographic projection.                                                           
+	//                                                                                                                   
+	// Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or                         
+	// more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.                                   
+	Projection                                                                                  *Projection              `json:"projection,omitempty"`
+	// A key-value mapping between selection names and definitions.                                                      
+	Selection                                                                                   *map[string]SelectionDef `json:"selection,omitempty"`
 }
 
 type MarkDef struct {
@@ -3382,7 +3382,7 @@ type MarkDef struct {
 	// __Default value:__ (None)                                                                                  
 	Stroke                                                                                       *string          `json:"stroke,omitempty"`
 	// An array of alternating stroke, space lengths for creating dashed or dotted lines.                         
-	StrokeDash                                                                                   []float64        `json:"strokeDash,omitempty"`
+	StrokeDash                                                                                   *[]float64       `json:"strokeDash,omitempty"`
 	// The offset (in pixels) into which to begin drawing with the stroke dash array.                             
 	StrokeDashOffset                                                                             *float64         `json:"strokeDashOffset,omitempty"`
 	// The stroke opacity (value between [0,1]).                                                                  
@@ -3423,49 +3423,49 @@ type MarkDef struct {
 // Works with `"geoshape"` marks and `"point"` or `"line"` marks that have a channel (one or
 // more of `"X"`, `"X2"`, `"Y"`, `"Y2"`) with type `"latitude"`, or `"longitude"`.
 type Projection struct {
-	// Sets the projection’s center to the specified center, a two-element array of longitude                              
-	// and latitude in degrees.                                                                                            
-	//                                                                                                                     
-	// __Default value:__ `[0, 0]`                                                                                         
-	Center                                                                                     []float64                   `json:"center,omitempty"`
-	// Sets the projection’s clipping circle radius to the specified angle in degrees. If                                  
-	// `null`, switches to [antimeridian](http://bl.ocks.org/mbostock/3788999) cutting rather                              
-	// than small-circle clipping.                                                                                         
-	ClipAngle                                                                                  *float64                    `json:"clipAngle,omitempty"`
-	// Sets the projection’s viewport clip extent to the specified bounds in pixels. The extent                            
-	// bounds are specified as an array `[[x0, y0], [x1, y1]]`, where `x0` is the left-side of                             
-	// the viewport, `y0` is the top, `x1` is the right and `y1` is the bottom. If `null`, no                              
-	// viewport clipping is performed.                                                                                     
-	ClipExtent                                                                                 [][]float64                 `json:"clipExtent,omitempty"`
-	Coefficient                                                                                *float64                    `json:"coefficient,omitempty"`
-	Distance                                                                                   *float64                    `json:"distance,omitempty"`
-	Fraction                                                                                   *float64                    `json:"fraction,omitempty"`
-	Lobes                                                                                      *float64                    `json:"lobes,omitempty"`
-	Parallel                                                                                   *float64                    `json:"parallel,omitempty"`
-	// Sets the threshold for the projection’s [adaptive                                                                   
-	// resampling](http://bl.ocks.org/mbostock/3795544) to the specified value in pixels. This                             
-	// value corresponds to the [Douglas–Peucker                                                                           
-	// distance](http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm).                            
-	// If precision is not specified, returns the projection’s current resampling precision                                
-	// which defaults to `√0.5 ≅ 0.70710…`.                                                                                
-	Precision                                                                                  map[string]*TitleFontWeight `json:"precision,omitempty"`
-	Radius                                                                                     *float64                    `json:"radius,omitempty"`
-	Ratio                                                                                      *float64                    `json:"ratio,omitempty"`
-	// Sets the projection’s three-axis rotation to the specified angles, which must be a two-                             
-	// or three-element array of numbers [`lambda`, `phi`, `gamma`] specifying the rotation                                
-	// angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.)                             
-	//                                                                                                                     
-	// __Default value:__ `[0, 0, 0]`                                                                                      
-	Rotate                                                                                     []float64                   `json:"rotate,omitempty"`
-	Spacing                                                                                    *float64                    `json:"spacing,omitempty"`
-	Tilt                                                                                       *float64                    `json:"tilt,omitempty"`
-	// The cartographic projection to use. This value is case-insensitive, for example                                     
-	// `"albers"` and `"Albers"` indicate the same projection type. You can find all valid                                 
-	// projection types [in the                                                                                            
-	// documentation](https://vega.github.io/vega-lite/docs/projection.html#projection-types).                             
-	//                                                                                                                     
-	// __Default value:__ `mercator`                                                                                       
-	Type                                                                                       *VGProjectionType           `json:"type,omitempty"`
+	// Sets the projection’s center to the specified center, a two-element array of longitude                               
+	// and latitude in degrees.                                                                                             
+	//                                                                                                                      
+	// __Default value:__ `[0, 0]`                                                                                          
+	Center                                                                                     *[]float64                   `json:"center,omitempty"`
+	// Sets the projection’s clipping circle radius to the specified angle in degrees. If                                   
+	// `null`, switches to [antimeridian](http://bl.ocks.org/mbostock/3788999) cutting rather                               
+	// than small-circle clipping.                                                                                          
+	ClipAngle                                                                                  *float64                     `json:"clipAngle,omitempty"`
+	// Sets the projection’s viewport clip extent to the specified bounds in pixels. The extent                             
+	// bounds are specified as an array `[[x0, y0], [x1, y1]]`, where `x0` is the left-side of                              
+	// the viewport, `y0` is the top, `x1` is the right and `y1` is the bottom. If `null`, no                               
+	// viewport clipping is performed.                                                                                      
+	ClipExtent                                                                                 *[][]float64                 `json:"clipExtent,omitempty"`
+	Coefficient                                                                                *float64                     `json:"coefficient,omitempty"`
+	Distance                                                                                   *float64                     `json:"distance,omitempty"`
+	Fraction                                                                                   *float64                     `json:"fraction,omitempty"`
+	Lobes                                                                                      *float64                     `json:"lobes,omitempty"`
+	Parallel                                                                                   *float64                     `json:"parallel,omitempty"`
+	// Sets the threshold for the projection’s [adaptive                                                                    
+	// resampling](http://bl.ocks.org/mbostock/3795544) to the specified value in pixels. This                              
+	// value corresponds to the [Douglas–Peucker                                                                            
+	// distance](http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm).                             
+	// If precision is not specified, returns the projection’s current resampling precision                                 
+	// which defaults to `√0.5 ≅ 0.70710…`.                                                                                 
+	Precision                                                                                  *map[string]*TitleFontWeight `json:"precision,omitempty"`
+	Radius                                                                                     *float64                     `json:"radius,omitempty"`
+	Ratio                                                                                      *float64                     `json:"ratio,omitempty"`
+	// Sets the projection’s three-axis rotation to the specified angles, which must be a two-                              
+	// or three-element array of numbers [`lambda`, `phi`, `gamma`] specifying the rotation                                 
+	// angles in degrees about each spherical axis. (These correspond to yaw, pitch and roll.)                              
+	//                                                                                                                      
+	// __Default value:__ `[0, 0, 0]`                                                                                       
+	Rotate                                                                                     *[]float64                   `json:"rotate,omitempty"`
+	Spacing                                                                                    *float64                     `json:"spacing,omitempty"`
+	Tilt                                                                                       *float64                     `json:"tilt,omitempty"`
+	// The cartographic projection to use. This value is case-insensitive, for example                                      
+	// `"albers"` and `"Albers"` indicate the same projection type. You can find all valid                                  
+	// projection types [in the                                                                                             
+	// documentation](https://vega.github.io/vega-lite/docs/projection.html#projection-types).                              
+	//                                                                                                                      
+	// __Default value:__ `mercator`                                                                                        
+	Type                                                                                       *VGProjectionType            `json:"type,omitempty"`
 }
 
 // Scale, axis, and legend resolutions for layers.
@@ -3524,10 +3524,10 @@ type SelectionDef struct {
 	Empty                                                                                       *Empty               `json:"empty,omitempty"`
 	// An array of encoding channels. The corresponding data field values                                            
 	// must match for a data tuple to fall within the selection.                                                     
-	Encodings                                                                                   []SingleDefChannel   `json:"encodings,omitempty"`
+	Encodings                                                                                   *[]SingleDefChannel  `json:"encodings,omitempty"`
 	// An array of field names whose values must match for a data tuple to                                           
 	// fall within the selection.                                                                                    
-	Fields                                                                                      []string             `json:"fields,omitempty"`
+	Fields                                                                                      *[]string            `json:"fields,omitempty"`
 	// When true, an invisible voronoi diagram is computed to accelerate discrete                                    
 	// selection. The data value _nearest_ the mouse cursor is added to the selection.                               
 	//                                                                                                               
@@ -3642,10 +3642,10 @@ type Transform struct {
 	// The timeUnit.                                                                                                     
 	TimeUnit                                                                                    *TimeUnit                `json:"timeUnit,omitempty"`
 	// Array of objects that define fields to aggregate.                                                                 
-	Aggregate                                                                                   []AggregatedFieldDef     `json:"aggregate,omitempty"`
+	Aggregate                                                                                   *[]AggregatedFieldDef    `json:"aggregate,omitempty"`
 	// The data fields to group by. If not specified, a single group containing all data objects                         
 	// will be used.                                                                                                     
-	Groupby                                                                                     []string                 `json:"groupby,omitempty"`
+	Groupby                                                                                     *[]string                `json:"groupby,omitempty"`
 }
 
 type AggregatedFieldDef struct {
@@ -3662,22 +3662,22 @@ type AggregatedFieldDef struct {
 
 // Secondary data reference.
 type LookupData struct {
-	// Secondary data source to lookup in.                     
-	Data                                              Data     `json:"data"`
-	// Fields in foreign data to lookup.                       
-	// If not specified, the entire object is queried.         
-	Fields                                            []string `json:"fields,omitempty"`
-	// Key in data to lookup.                                  
-	Key                                               string   `json:"key"`
+	// Secondary data source to lookup in.                      
+	Data                                              Data      `json:"data"`
+	// Fields in foreign data to lookup.                        
+	// If not specified, the entire object is queried.          
+	Fields                                            *[]string `json:"fields,omitempty"`
+	// Key in data to lookup.                                   
+	Key                                               string    `json:"key"`
 }
 
 // An object that describes what fields should be repeated into views that are laid out as a
 // `row` or `column`.
 type Repeat struct {
-	// Horizontal repeated views.         
-	Column                       []string `json:"column,omitempty"`
-	// Vertical repeated views.           
-	Row                          []string `json:"row,omitempty"`
+	// Horizontal repeated views.          
+	Column                       *[]string `json:"column,omitempty"`
+	// Vertical repeated views.            
+	Row                          *[]string `json:"row,omitempty"`
 }
 
 // Determines how size calculation should be performed, one of `"content"` or `"padding"`.
