// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT.

package packageindex

import (
	json "encoding/json"
	easyjson "github.com/mailru/easyjson"
	jlexer "github.com/mailru/easyjson/jlexer"
	jwriter "github.com/mailru/easyjson/jwriter"
	relaxed_semver "go.bug.st/relaxed-semver"
	strings "strings"
)

// suppress unused package warning
var (
	_ *json.RawMessage
	_ *jlexer.Lexer
	_ *jwriter.Writer
	_ easyjson.Marshaler
)

func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(in *jlexer.Lexer, out *indexToolReleaseFlavour) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "host":
			out.OS = string(in.String())
		case "url":
			out.URL = string(in.String())
		case "archiveFileName":
			out.ArchiveFileName = string(in.String())
		case "size":
			out.Size = in.JsonNumber()
		case "checksum":
			out.Checksum = string(in.String())
		default:
			switch strings.ToLower(key) {
			case "host":
				out.OS = string(in.String())
			case "url":
				out.URL = string(in.String())
			case "archivefilename":
				out.ArchiveFileName = string(in.String())
			case "size":
				out.Size = in.JsonNumber()
			case "checksum":
				out.Checksum = string(in.String())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(out *jwriter.Writer, in indexToolReleaseFlavour) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"host\":"
		out.RawString(prefix[1:])
		out.String(string(in.OS))
	}
	{
		const prefix string = ",\"url\":"
		out.RawString(prefix)
		out.String(string(in.URL))
	}
	{
		const prefix string = ",\"archiveFileName\":"
		out.RawString(prefix)
		out.String(string(in.ArchiveFileName))
	}
	{
		const prefix string = ",\"size\":"
		out.RawString(prefix)
		out.String(string(in.Size))
	}
	{
		const prefix string = ",\"checksum\":"
		out.RawString(prefix)
		out.String(string(in.Checksum))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexToolReleaseFlavour) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexToolReleaseFlavour) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexToolReleaseFlavour) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexToolReleaseFlavour) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(in *jlexer.Lexer, out *indexToolRelease) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "name":
			out.Name = string(in.String())
		case "version":
			if in.IsNull() {
				in.Skip()
				out.Version = nil
			} else {
				if out.Version == nil {
					out.Version = new(relaxed_semver.RelaxedVersion)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.Version).UnmarshalJSON(data))
				}
			}
		case "systems":
			if in.IsNull() {
				in.Skip()
				out.Systems = nil
			} else {
				in.Delim('[')
				if out.Systems == nil {
					if !in.IsDelim(']') {
						out.Systems = make([]indexToolReleaseFlavour, 0, 0)
					} else {
						out.Systems = []indexToolReleaseFlavour{}
					}
				} else {
					out.Systems = (out.Systems)[:0]
				}
				for !in.IsDelim(']') {
					var v1 indexToolReleaseFlavour
					(v1).UnmarshalEasyJSON(in)
					out.Systems = append(out.Systems, v1)
					in.WantComma()
				}
				in.Delim(']')
			}
		default:
			switch strings.ToLower(key) {
			case "name":
				out.Name = string(in.String())
			case "version":
				if in.IsNull() {
					in.Skip()
					out.Version = nil
				} else {
					if out.Version == nil {
						out.Version = new(relaxed_semver.RelaxedVersion)
					}
					if data := in.Raw(); in.Ok() {
						in.AddError((*out.Version).UnmarshalJSON(data))
					}
				}
			case "systems":
				if in.IsNull() {
					in.Skip()
					out.Systems = nil
				} else {
					in.Delim('[')
					if out.Systems == nil {
						if !in.IsDelim(']') {
							out.Systems = make([]indexToolReleaseFlavour, 0, 0)
						} else {
							out.Systems = []indexToolReleaseFlavour{}
						}
					} else {
						out.Systems = (out.Systems)[:0]
					}
					for !in.IsDelim(']') {
						var v2 indexToolReleaseFlavour
						(v2).UnmarshalEasyJSON(in)
						out.Systems = append(out.Systems, v2)
						in.WantComma()
					}
					in.Delim(']')
				}
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(out *jwriter.Writer, in indexToolRelease) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix[1:])
		out.String(string(in.Name))
	}
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix)
		if in.Version == nil {
			out.RawString("null")
		} else {
			out.Raw((*in.Version).MarshalJSON())
		}
	}
	{
		const prefix string = ",\"systems\":"
		out.RawString(prefix)
		if in.Systems == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v3, v4 := range in.Systems {
				if v3 > 0 {
					out.RawByte(',')
				}
				(v4).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexToolRelease) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexToolRelease) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexToolRelease) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexToolRelease) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex1(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(in *jlexer.Lexer, out *indexToolDependency) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "packager":
			out.Packager = string(in.String())
		case "name":
			out.Name = string(in.String())
		case "version":
			if in.IsNull() {
				in.Skip()
				out.Version = nil
			} else {
				if out.Version == nil {
					out.Version = new(relaxed_semver.RelaxedVersion)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.Version).UnmarshalJSON(data))
				}
			}
		default:
			switch strings.ToLower(key) {
			case "packager":
				out.Packager = string(in.String())
			case "name":
				out.Name = string(in.String())
			case "version":
				if in.IsNull() {
					in.Skip()
					out.Version = nil
				} else {
					if out.Version == nil {
						out.Version = new(relaxed_semver.RelaxedVersion)
					}
					if data := in.Raw(); in.Ok() {
						in.AddError((*out.Version).UnmarshalJSON(data))
					}
				}
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(out *jwriter.Writer, in indexToolDependency) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"packager\":"
		out.RawString(prefix[1:])
		out.String(string(in.Packager))
	}
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix)
		out.String(string(in.Name))
	}
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix)
		if in.Version == nil {
			out.RawString("null")
		} else {
			out.Raw((*in.Version).MarshalJSON())
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexToolDependency) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexToolDependency) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexToolDependency) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexToolDependency) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex2(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(in *jlexer.Lexer, out *indexPlatformRelease) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "name":
			out.Name = string(in.String())
		case "architecture":
			out.Architecture = string(in.String())
		case "version":
			if in.IsNull() {
				in.Skip()
				out.Version = nil
			} else {
				if out.Version == nil {
					out.Version = new(relaxed_semver.Version)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.Version).UnmarshalJSON(data))
				}
			}
		case "deprecated":
			out.Deprecated = bool(in.Bool())
		case "category":
			out.Category = string(in.String())
		case "url":
			out.URL = string(in.String())
		case "archiveFileName":
			out.ArchiveFileName = string(in.String())
		case "checksum":
			out.Checksum = string(in.String())
		case "size":
			out.Size = in.JsonNumber()
		case "boards":
			if in.IsNull() {
				in.Skip()
				out.Boards = nil
			} else {
				in.Delim('[')
				if out.Boards == nil {
					if !in.IsDelim(']') {
						out.Boards = make([]indexBoard, 0, 1)
					} else {
						out.Boards = []indexBoard{}
					}
				} else {
					out.Boards = (out.Boards)[:0]
				}
				for !in.IsDelim(']') {
					var v5 indexBoard
					(v5).UnmarshalEasyJSON(in)
					out.Boards = append(out.Boards, v5)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "help":
			(out.Help).UnmarshalEasyJSON(in)
		case "toolsDependencies":
			if in.IsNull() {
				in.Skip()
				out.ToolDependencies = nil
			} else {
				in.Delim('[')
				if out.ToolDependencies == nil {
					if !in.IsDelim(']') {
						out.ToolDependencies = make([]indexToolDependency, 0, 1)
					} else {
						out.ToolDependencies = []indexToolDependency{}
					}
				} else {
					out.ToolDependencies = (out.ToolDependencies)[:0]
				}
				for !in.IsDelim(']') {
					var v6 indexToolDependency
					(v6).UnmarshalEasyJSON(in)
					out.ToolDependencies = append(out.ToolDependencies, v6)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "discoveryDependencies":
			if in.IsNull() {
				in.Skip()
				out.DiscoveryDependencies = nil
			} else {
				in.Delim('[')
				if out.DiscoveryDependencies == nil {
					if !in.IsDelim(']') {
						out.DiscoveryDependencies = make([]indexDiscoveryDependency, 0, 2)
					} else {
						out.DiscoveryDependencies = []indexDiscoveryDependency{}
					}
				} else {
					out.DiscoveryDependencies = (out.DiscoveryDependencies)[:0]
				}
				for !in.IsDelim(']') {
					var v7 indexDiscoveryDependency
					(v7).UnmarshalEasyJSON(in)
					out.DiscoveryDependencies = append(out.DiscoveryDependencies, v7)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "monitorDependencies":
			if in.IsNull() {
				in.Skip()
				out.MonitorDependencies = nil
			} else {
				in.Delim('[')
				if out.MonitorDependencies == nil {
					if !in.IsDelim(']') {
						out.MonitorDependencies = make([]indexMonitorDependency, 0, 2)
					} else {
						out.MonitorDependencies = []indexMonitorDependency{}
					}
				} else {
					out.MonitorDependencies = (out.MonitorDependencies)[:0]
				}
				for !in.IsDelim(']') {
					var v8 indexMonitorDependency
					(v8).UnmarshalEasyJSON(in)
					out.MonitorDependencies = append(out.MonitorDependencies, v8)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "libraryDependencies":
			if in.IsNull() {
				in.Skip()
				out.LibraryDependencies = nil
			} else {
				in.Delim('[')
				if out.LibraryDependencies == nil {
					if !in.IsDelim(']') {
						out.LibraryDependencies = make([]indexLibraryDependency, 0, 2)
					} else {
						out.LibraryDependencies = []indexLibraryDependency{}
					}
				} else {
					out.LibraryDependencies = (out.LibraryDependencies)[:0]
				}
				for !in.IsDelim(']') {
					var v9 indexLibraryDependency
					(v9).UnmarshalEasyJSON(in)
					out.LibraryDependencies = append(out.LibraryDependencies, v9)
					in.WantComma()
				}
				in.Delim(']')
			}
		default:
			switch strings.ToLower(key) {
			case "name":
				out.Name = string(in.String())
			case "architecture":
				out.Architecture = string(in.String())
			case "version":
				if in.IsNull() {
					in.Skip()
					out.Version = nil
				} else {
					if out.Version == nil {
						out.Version = new(relaxed_semver.Version)
					}
					if data := in.Raw(); in.Ok() {
						in.AddError((*out.Version).UnmarshalJSON(data))
					}
				}
			case "deprecated":
				out.Deprecated = bool(in.Bool())
			case "category":
				out.Category = string(in.String())
			case "url":
				out.URL = string(in.String())
			case "archivefilename":
				out.ArchiveFileName = string(in.String())
			case "checksum":
				out.Checksum = string(in.String())
			case "size":
				out.Size = in.JsonNumber()
			case "boards":
				if in.IsNull() {
					in.Skip()
					out.Boards = nil
				} else {
					in.Delim('[')
					if out.Boards == nil {
						if !in.IsDelim(']') {
							out.Boards = make([]indexBoard, 0, 1)
						} else {
							out.Boards = []indexBoard{}
						}
					} else {
						out.Boards = (out.Boards)[:0]
					}
					for !in.IsDelim(']') {
						var v10 indexBoard
						(v10).UnmarshalEasyJSON(in)
						out.Boards = append(out.Boards, v10)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "help":
				(out.Help).UnmarshalEasyJSON(in)
			case "toolsdependencies":
				if in.IsNull() {
					in.Skip()
					out.ToolDependencies = nil
				} else {
					in.Delim('[')
					if out.ToolDependencies == nil {
						if !in.IsDelim(']') {
							out.ToolDependencies = make([]indexToolDependency, 0, 1)
						} else {
							out.ToolDependencies = []indexToolDependency{}
						}
					} else {
						out.ToolDependencies = (out.ToolDependencies)[:0]
					}
					for !in.IsDelim(']') {
						var v11 indexToolDependency
						(v11).UnmarshalEasyJSON(in)
						out.ToolDependencies = append(out.ToolDependencies, v11)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "discoverydependencies":
				if in.IsNull() {
					in.Skip()
					out.DiscoveryDependencies = nil
				} else {
					in.Delim('[')
					if out.DiscoveryDependencies == nil {
						if !in.IsDelim(']') {
							out.DiscoveryDependencies = make([]indexDiscoveryDependency, 0, 2)
						} else {
							out.DiscoveryDependencies = []indexDiscoveryDependency{}
						}
					} else {
						out.DiscoveryDependencies = (out.DiscoveryDependencies)[:0]
					}
					for !in.IsDelim(']') {
						var v12 indexDiscoveryDependency
						(v12).UnmarshalEasyJSON(in)
						out.DiscoveryDependencies = append(out.DiscoveryDependencies, v12)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "monitordependencies":
				if in.IsNull() {
					in.Skip()
					out.MonitorDependencies = nil
				} else {
					in.Delim('[')
					if out.MonitorDependencies == nil {
						if !in.IsDelim(']') {
							out.MonitorDependencies = make([]indexMonitorDependency, 0, 2)
						} else {
							out.MonitorDependencies = []indexMonitorDependency{}
						}
					} else {
						out.MonitorDependencies = (out.MonitorDependencies)[:0]
					}
					for !in.IsDelim(']') {
						var v13 indexMonitorDependency
						(v13).UnmarshalEasyJSON(in)
						out.MonitorDependencies = append(out.MonitorDependencies, v13)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "librarydependencies":
				if in.IsNull() {
					in.Skip()
					out.LibraryDependencies = nil
				} else {
					in.Delim('[')
					if out.LibraryDependencies == nil {
						if !in.IsDelim(']') {
							out.LibraryDependencies = make([]indexLibraryDependency, 0, 2)
						} else {
							out.LibraryDependencies = []indexLibraryDependency{}
						}
					} else {
						out.LibraryDependencies = (out.LibraryDependencies)[:0]
					}
					for !in.IsDelim(']') {
						var v14 indexLibraryDependency
						(v14).UnmarshalEasyJSON(in)
						out.LibraryDependencies = append(out.LibraryDependencies, v14)
						in.WantComma()
					}
					in.Delim(']')
				}
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(out *jwriter.Writer, in indexPlatformRelease) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix[1:])
		out.String(string(in.Name))
	}
	{
		const prefix string = ",\"architecture\":"
		out.RawString(prefix)
		out.String(string(in.Architecture))
	}
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix)
		if in.Version == nil {
			out.RawString("null")
		} else {
			out.Raw((*in.Version).MarshalJSON())
		}
	}
	{
		const prefix string = ",\"deprecated\":"
		out.RawString(prefix)
		out.Bool(bool(in.Deprecated))
	}
	{
		const prefix string = ",\"category\":"
		out.RawString(prefix)
		out.String(string(in.Category))
	}
	{
		const prefix string = ",\"url\":"
		out.RawString(prefix)
		out.String(string(in.URL))
	}
	{
		const prefix string = ",\"archiveFileName\":"
		out.RawString(prefix)
		out.String(string(in.ArchiveFileName))
	}
	{
		const prefix string = ",\"checksum\":"
		out.RawString(prefix)
		out.String(string(in.Checksum))
	}
	{
		const prefix string = ",\"size\":"
		out.RawString(prefix)
		out.String(string(in.Size))
	}
	{
		const prefix string = ",\"boards\":"
		out.RawString(prefix)
		if in.Boards == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v15, v16 := range in.Boards {
				if v15 > 0 {
					out.RawByte(',')
				}
				(v16).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"help\":"
		out.RawString(prefix)
		(in.Help).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"toolsDependencies\":"
		out.RawString(prefix)
		if in.ToolDependencies == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v17, v18 := range in.ToolDependencies {
				if v17 > 0 {
					out.RawByte(',')
				}
				(v18).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"discoveryDependencies\":"
		out.RawString(prefix)
		if in.DiscoveryDependencies == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v19, v20 := range in.DiscoveryDependencies {
				if v19 > 0 {
					out.RawByte(',')
				}
				(v20).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"monitorDependencies\":"
		out.RawString(prefix)
		if in.MonitorDependencies == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v21, v22 := range in.MonitorDependencies {
				if v21 > 0 {
					out.RawByte(',')
				}
				(v22).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"libraryDependencies\":"
		out.RawString(prefix)
		if in.LibraryDependencies == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v23, v24 := range in.LibraryDependencies {
				if v23 > 0 {
					out.RawByte(',')
				}
				(v24).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexPlatformRelease) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexPlatformRelease) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexPlatformRelease) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexPlatformRelease) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex3(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(in *jlexer.Lexer, out *indexPackage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "name":
			out.Name = string(in.String())
		case "maintainer":
			out.Maintainer = string(in.String())
		case "websiteUrl":
			out.WebsiteURL = string(in.String())
		case "url":
			out.URL = string(in.String())
		case "email":
			out.Email = string(in.String())
		case "platforms":
			if in.IsNull() {
				in.Skip()
				out.Platforms = nil
			} else {
				in.Delim('[')
				if out.Platforms == nil {
					if !in.IsDelim(']') {
						out.Platforms = make([]*indexPlatformRelease, 0, 8)
					} else {
						out.Platforms = []*indexPlatformRelease{}
					}
				} else {
					out.Platforms = (out.Platforms)[:0]
				}
				for !in.IsDelim(']') {
					var v25 *indexPlatformRelease
					if in.IsNull() {
						in.Skip()
						v25 = nil
					} else {
						if v25 == nil {
							v25 = new(indexPlatformRelease)
						}
						(*v25).UnmarshalEasyJSON(in)
					}
					out.Platforms = append(out.Platforms, v25)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "tools":
			if in.IsNull() {
				in.Skip()
				out.Tools = nil
			} else {
				in.Delim('[')
				if out.Tools == nil {
					if !in.IsDelim(']') {
						out.Tools = make([]*indexToolRelease, 0, 8)
					} else {
						out.Tools = []*indexToolRelease{}
					}
				} else {
					out.Tools = (out.Tools)[:0]
				}
				for !in.IsDelim(']') {
					var v26 *indexToolRelease
					if in.IsNull() {
						in.Skip()
						v26 = nil
					} else {
						if v26 == nil {
							v26 = new(indexToolRelease)
						}
						(*v26).UnmarshalEasyJSON(in)
					}
					out.Tools = append(out.Tools, v26)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "help":
			(out.Help).UnmarshalEasyJSON(in)
		default:
			switch strings.ToLower(key) {
			case "name":
				out.Name = string(in.String())
			case "maintainer":
				out.Maintainer = string(in.String())
			case "websiteurl":
				out.WebsiteURL = string(in.String())
			case "url":
				out.URL = string(in.String())
			case "email":
				out.Email = string(in.String())
			case "platforms":
				if in.IsNull() {
					in.Skip()
					out.Platforms = nil
				} else {
					in.Delim('[')
					if out.Platforms == nil {
						if !in.IsDelim(']') {
							out.Platforms = make([]*indexPlatformRelease, 0, 8)
						} else {
							out.Platforms = []*indexPlatformRelease{}
						}
					} else {
						out.Platforms = (out.Platforms)[:0]
					}
					for !in.IsDelim(']') {
						var v27 *indexPlatformRelease
						if in.IsNull() {
							in.Skip()
							v27 = nil
						} else {
							if v27 == nil {
								v27 = new(indexPlatformRelease)
							}
							(*v27).UnmarshalEasyJSON(in)
						}
						out.Platforms = append(out.Platforms, v27)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "tools":
				if in.IsNull() {
					in.Skip()
					out.Tools = nil
				} else {
					in.Delim('[')
					if out.Tools == nil {
						if !in.IsDelim(']') {
							out.Tools = make([]*indexToolRelease, 0, 8)
						} else {
							out.Tools = []*indexToolRelease{}
						}
					} else {
						out.Tools = (out.Tools)[:0]
					}
					for !in.IsDelim(']') {
						var v28 *indexToolRelease
						if in.IsNull() {
							in.Skip()
							v28 = nil
						} else {
							if v28 == nil {
								v28 = new(indexToolRelease)
							}
							(*v28).UnmarshalEasyJSON(in)
						}
						out.Tools = append(out.Tools, v28)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "help":
				(out.Help).UnmarshalEasyJSON(in)
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(out *jwriter.Writer, in indexPackage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix[1:])
		out.String(string(in.Name))
	}
	{
		const prefix string = ",\"maintainer\":"
		out.RawString(prefix)
		out.String(string(in.Maintainer))
	}
	{
		const prefix string = ",\"websiteUrl\":"
		out.RawString(prefix)
		out.String(string(in.WebsiteURL))
	}
	{
		const prefix string = ",\"url\":"
		out.RawString(prefix)
		out.String(string(in.URL))
	}
	{
		const prefix string = ",\"email\":"
		out.RawString(prefix)
		out.String(string(in.Email))
	}
	{
		const prefix string = ",\"platforms\":"
		out.RawString(prefix)
		if in.Platforms == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v29, v30 := range in.Platforms {
				if v29 > 0 {
					out.RawByte(',')
				}
				if v30 == nil {
					out.RawString("null")
				} else {
					(*v30).MarshalEasyJSON(out)
				}
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"tools\":"
		out.RawString(prefix)
		if in.Tools == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v31, v32 := range in.Tools {
				if v31 > 0 {
					out.RawByte(',')
				}
				if v32 == nil {
					out.RawString("null")
				} else {
					(*v32).MarshalEasyJSON(out)
				}
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"help\":"
		out.RawString(prefix)
		(in.Help).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexPackage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexPackage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexPackage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexPackage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex4(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(in *jlexer.Lexer, out *indexMonitorDependency) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "packager":
			out.Packager = string(in.String())
		case "name":
			out.Name = string(in.String())
		default:
			switch strings.ToLower(key) {
			case "packager":
				out.Packager = string(in.String())
			case "name":
				out.Name = string(in.String())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(out *jwriter.Writer, in indexMonitorDependency) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"packager\":"
		out.RawString(prefix[1:])
		out.String(string(in.Packager))
	}
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix)
		out.String(string(in.Name))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexMonitorDependency) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexMonitorDependency) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexMonitorDependency) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexMonitorDependency) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex5(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(in *jlexer.Lexer, out *indexLibraryDependency) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "name":
			out.Name = string(in.String())
		case "version":
			if in.IsNull() {
				in.Skip()
				out.Version = nil
			} else {
				if out.Version == nil {
					out.Version = new(relaxed_semver.Version)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.Version).UnmarshalJSON(data))
				}
			}
		default:
			switch strings.ToLower(key) {
			case "name":
				out.Name = string(in.String())
			case "version":
				if in.IsNull() {
					in.Skip()
					out.Version = nil
				} else {
					if out.Version == nil {
						out.Version = new(relaxed_semver.Version)
					}
					if data := in.Raw(); in.Ok() {
						in.AddError((*out.Version).UnmarshalJSON(data))
					}
				}
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(out *jwriter.Writer, in indexLibraryDependency) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix[1:])
		out.String(string(in.Name))
	}
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix)
		if in.Version == nil {
			out.RawString("null")
		} else {
			out.Raw((*in.Version).MarshalJSON())
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexLibraryDependency) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexLibraryDependency) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexLibraryDependency) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexLibraryDependency) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex6(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(in *jlexer.Lexer, out *indexHelp) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "online":
			out.Online = string(in.String())
		default:
			switch strings.ToLower(key) {
			case "online":
				out.Online = string(in.String())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(out *jwriter.Writer, in indexHelp) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Online != "" {
		const prefix string = ",\"online\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.Online))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexHelp) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexHelp) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexHelp) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexHelp) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex7(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(in *jlexer.Lexer, out *indexDiscoveryDependency) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "packager":
			out.Packager = string(in.String())
		case "name":
			out.Name = string(in.String())
		default:
			switch strings.ToLower(key) {
			case "packager":
				out.Packager = string(in.String())
			case "name":
				out.Name = string(in.String())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(out *jwriter.Writer, in indexDiscoveryDependency) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"packager\":"
		out.RawString(prefix[1:])
		out.String(string(in.Packager))
	}
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix)
		out.String(string(in.Name))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexDiscoveryDependency) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexDiscoveryDependency) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexDiscoveryDependency) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexDiscoveryDependency) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex8(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(in *jlexer.Lexer, out *indexBoardID) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "usb":
			out.USB = string(in.String())
		default:
			switch strings.ToLower(key) {
			case "usb":
				out.USB = string(in.String())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(out *jwriter.Writer, in indexBoardID) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"usb\":"
		out.RawString(prefix[1:])
		out.String(string(in.USB))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexBoardID) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexBoardID) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexBoardID) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexBoardID) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex9(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(in *jlexer.Lexer, out *indexBoard) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "name":
			out.Name = string(in.String())
		case "id":
			if in.IsNull() {
				in.Skip()
				out.ID = nil
			} else {
				in.Delim('[')
				if out.ID == nil {
					if !in.IsDelim(']') {
						out.ID = make([]indexBoardID, 0, 4)
					} else {
						out.ID = []indexBoardID{}
					}
				} else {
					out.ID = (out.ID)[:0]
				}
				for !in.IsDelim(']') {
					var v33 indexBoardID
					(v33).UnmarshalEasyJSON(in)
					out.ID = append(out.ID, v33)
					in.WantComma()
				}
				in.Delim(']')
			}
		default:
			switch strings.ToLower(key) {
			case "name":
				out.Name = string(in.String())
			case "id":
				if in.IsNull() {
					in.Skip()
					out.ID = nil
				} else {
					in.Delim('[')
					if out.ID == nil {
						if !in.IsDelim(']') {
							out.ID = make([]indexBoardID, 0, 4)
						} else {
							out.ID = []indexBoardID{}
						}
					} else {
						out.ID = (out.ID)[:0]
					}
					for !in.IsDelim(']') {
						var v34 indexBoardID
						(v34).UnmarshalEasyJSON(in)
						out.ID = append(out.ID, v34)
						in.WantComma()
					}
					in.Delim(']')
				}
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(out *jwriter.Writer, in indexBoard) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"name\":"
		out.RawString(prefix[1:])
		out.String(string(in.Name))
	}
	if len(in.ID) != 0 {
		const prefix string = ",\"id\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v35, v36 := range in.ID {
				if v35 > 0 {
					out.RawByte(',')
				}
				(v36).MarshalEasyJSON(out)
			}
			out.RawByte(']')
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v indexBoard) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v indexBoard) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *indexBoard) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *indexBoard) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex10(l, v)
}
func easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(in *jlexer.Lexer, out *Index) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "packages":
			if in.IsNull() {
				in.Skip()
				out.Packages = nil
			} else {
				in.Delim('[')
				if out.Packages == nil {
					if !in.IsDelim(']') {
						out.Packages = make([]*indexPackage, 0, 8)
					} else {
						out.Packages = []*indexPackage{}
					}
				} else {
					out.Packages = (out.Packages)[:0]
				}
				for !in.IsDelim(']') {
					var v37 *indexPackage
					if in.IsNull() {
						in.Skip()
						v37 = nil
					} else {
						if v37 == nil {
							v37 = new(indexPackage)
						}
						(*v37).UnmarshalEasyJSON(in)
					}
					out.Packages = append(out.Packages, v37)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "IsTrusted":
			out.IsTrusted = bool(in.Bool())
		case "version":
			out.Version = int(in.Int())
		default:
			switch strings.ToLower(key) {
			case "packages":
				if in.IsNull() {
					in.Skip()
					out.Packages = nil
				} else {
					in.Delim('[')
					if out.Packages == nil {
						if !in.IsDelim(']') {
							out.Packages = make([]*indexPackage, 0, 8)
						} else {
							out.Packages = []*indexPackage{}
						}
					} else {
						out.Packages = (out.Packages)[:0]
					}
					for !in.IsDelim(']') {
						var v38 *indexPackage
						if in.IsNull() {
							in.Skip()
							v38 = nil
						} else {
							if v38 == nil {
								v38 = new(indexPackage)
							}
							(*v38).UnmarshalEasyJSON(in)
						}
						out.Packages = append(out.Packages, v38)
						in.WantComma()
					}
					in.Delim(']')
				}
			case "istrusted":
				out.IsTrusted = bool(in.Bool())
			case "version":
				out.Version = int(in.Int())
			default:
				in.SkipRecursive()
			}
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(out *jwriter.Writer, in Index) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"packages\":"
		out.RawString(prefix[1:])
		if in.Packages == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
			out.RawString("null")
		} else {
			out.RawByte('[')
			for v39, v40 := range in.Packages {
				if v39 > 0 {
					out.RawByte(',')
				}
				if v40 == nil {
					out.RawString("null")
				} else {
					(*v40).MarshalEasyJSON(out)
				}
			}
			out.RawByte(']')
		}
	}
	{
		const prefix string = ",\"IsTrusted\":"
		out.RawString(prefix)
		out.Bool(bool(in.IsTrusted))
	}
	if in.Version != 0 {
		const prefix string = ",\"version\":"
		out.RawString(prefix)
		out.Int(int(in.Version))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v Index) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v Index) MarshalEasyJSON(w *jwriter.Writer) {
	easyjsonE2a549a6EncodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *Index) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *Index) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjsonE2a549a6DecodeGithubComArduinoArduinoCliInternalArduinoCoresPackageindex11(l, v)
}
