| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // This file is autogenerated by: | 
 | //     mojo/public/tools/bindings/mojom_bindings_generator.py | 
 | // For: | 
 | //     mojo/public/interfaces/bindings/mojom_files.mojom | 
 | // | 
 |  | 
 | package mojom_files | 
 |  | 
 | import ( | 
 | 	fmt "fmt" | 
 | 	bindings "mojo/public/go/bindings" | 
 | 	mojom_types "mojom/generated/mojom_types" | 
 | 	sort "sort" | 
 | ) | 
 |  | 
 | type MojomFile struct { | 
 | 	FileName                  string | 
 | 	SpecifiedFileName         *string | 
 | 	ModuleNamespace           *string | 
 | 	Attributes                *[]mojom_types.Attribute | 
 | 	Imports                   *[]string | 
 | 	DeclaredMojomObjects      KeysByType | 
 | 	SerializedRuntimeTypeInfo *string | 
 | } | 
 |  | 
 | func (s *MojomFile) Encode(encoder *bindings.Encoder) error { | 
 | 	encoder.StartStruct(56, 0) | 
 | 	if err := encoder.WritePointer(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if err := encoder.WriteString(s.FileName); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if s.SpecifiedFileName == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WriteString((*s.SpecifiedFileName)); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.ModuleNamespace == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WriteString((*s.ModuleNamespace)); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.Attributes == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.Attributes))), 64) | 
 | 		for _, elem0 := range *s.Attributes { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := elem0.Encode(encoder); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.Imports == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.Imports))), 64) | 
 | 		for _, elem0 := range *s.Imports { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.WritePointer(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if err := s.DeclaredMojomObjects.Encode(encoder); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if s.SerializedRuntimeTypeInfo == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WriteString((*s.SerializedRuntimeTypeInfo)); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } | 
 |  | 
 | var mojomFile_Versions []bindings.DataHeader = []bindings.DataHeader{ | 
 | 	bindings.DataHeader{64, 0}, | 
 | } | 
 |  | 
 | func (s *MojomFile) Decode(decoder *bindings.Decoder) error { | 
 | 	header, err := decoder.StartStruct() | 
 | 	if err != nil { | 
 | 		return err | 
 | 	} | 
 | 	index := sort.Search(len(mojomFile_Versions), func(i int) bool { | 
 | 		return mojomFile_Versions[i].ElementsOrVersion >= header.ElementsOrVersion | 
 | 	}) | 
 | 	if index < len(mojomFile_Versions) { | 
 | 		if mojomFile_Versions[index].ElementsOrVersion > header.ElementsOrVersion { | 
 | 			index-- | 
 | 		} | 
 | 		expectedSize := mojomFile_Versions[index].Size | 
 | 		if expectedSize != header.Size { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedStructHeader, | 
 | 				fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size), | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 		} else { | 
 | 			value0, err := decoder.ReadString() | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			s.FileName = value0 | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.SpecifiedFileName = nil | 
 | 		} else { | 
 | 			s.SpecifiedFileName = new(string) | 
 | 			value0, err := decoder.ReadString() | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.SpecifiedFileName) = value0 | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.ModuleNamespace = nil | 
 | 		} else { | 
 | 			s.ModuleNamespace = new(string) | 
 | 			value0, err := decoder.ReadString() | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.ModuleNamespace) = value0 | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.Attributes = nil | 
 | 		} else { | 
 | 			s.Attributes = new([]mojom_types.Attribute) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.Attributes) = make([]mojom_types.Attribute, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					if err := (*s.Attributes)[i0].Decode(decoder); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.Imports = nil | 
 | 		} else { | 
 | 			s.Imports = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.Imports) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.Imports)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 		} else { | 
 | 			if err := s.DeclaredMojomObjects.Decode(decoder); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.SerializedRuntimeTypeInfo = nil | 
 | 		} else { | 
 | 			s.SerializedRuntimeTypeInfo = new(string) | 
 | 			value0, err := decoder.ReadString() | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.SerializedRuntimeTypeInfo) = value0 | 
 | 		} | 
 | 	} | 
 | 	if err := decoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } | 
 |  | 
 | type MojomFileGraph struct { | 
 | 	Files             map[string]MojomFile | 
 | 	ResolvedTypes     map[string]mojom_types.UserDefinedType | 
 | 	ResolvedConstants map[string]mojom_types.DeclaredConstant | 
 | } | 
 |  | 
 | func (s *MojomFileGraph) Encode(encoder *bindings.Encoder) error { | 
 | 	encoder.StartStruct(24, 0) | 
 | 	if err := encoder.WritePointer(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	encoder.StartMap() | 
 | 	{ | 
 | 		var keys0 []string | 
 | 		var values0 []MojomFile | 
 | 		if encoder.Deterministic() { | 
 | 			for key0, _ := range s.Files { | 
 | 				keys0 = append(keys0, key0) | 
 | 			} | 
 | 			bindings.SortMapKeys(&keys0) | 
 | 			values0 = make([]MojomFile, len(keys0)) | 
 | 			for i, key := range keys0 { | 
 | 				values0[i] = s.Files[key] | 
 | 			} | 
 | 		} else { | 
 | 			for key0, value0 := range s.Files { | 
 | 				keys0 = append(keys0, key0) | 
 | 				values0 = append(values0, value0) | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(keys0)), 64) | 
 | 		for _, elem1 := range keys0 { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem1); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(values0)), 64) | 
 | 		for _, elem1 := range values0 { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := elem1.Encode(encoder); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if err := encoder.WritePointer(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	encoder.StartMap() | 
 | 	{ | 
 | 		var keys0 []string | 
 | 		var values0 []mojom_types.UserDefinedType | 
 | 		if encoder.Deterministic() { | 
 | 			for key0, _ := range s.ResolvedTypes { | 
 | 				keys0 = append(keys0, key0) | 
 | 			} | 
 | 			bindings.SortMapKeys(&keys0) | 
 | 			values0 = make([]mojom_types.UserDefinedType, len(keys0)) | 
 | 			for i, key := range keys0 { | 
 | 				values0[i] = s.ResolvedTypes[key] | 
 | 			} | 
 | 		} else { | 
 | 			for key0, value0 := range s.ResolvedTypes { | 
 | 				keys0 = append(keys0, key0) | 
 | 				values0 = append(values0, value0) | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(keys0)), 64) | 
 | 		for _, elem1 := range keys0 { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem1); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(values0)), 128) | 
 | 		for _, elem1 := range values0 { | 
 | 			if elem1 == nil { | 
 | 				return &bindings.ValidationError{bindings.UnexpectedNullUnion, "unexpected null union"} | 
 | 			} | 
 | 			if err := elem1.Encode(encoder); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if err := encoder.WritePointer(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	encoder.StartMap() | 
 | 	{ | 
 | 		var keys0 []string | 
 | 		var values0 []mojom_types.DeclaredConstant | 
 | 		if encoder.Deterministic() { | 
 | 			for key0, _ := range s.ResolvedConstants { | 
 | 				keys0 = append(keys0, key0) | 
 | 			} | 
 | 			bindings.SortMapKeys(&keys0) | 
 | 			values0 = make([]mojom_types.DeclaredConstant, len(keys0)) | 
 | 			for i, key := range keys0 { | 
 | 				values0[i] = s.ResolvedConstants[key] | 
 | 			} | 
 | 		} else { | 
 | 			for key0, value0 := range s.ResolvedConstants { | 
 | 				keys0 = append(keys0, key0) | 
 | 				values0 = append(values0, value0) | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(keys0)), 64) | 
 | 		for _, elem1 := range keys0 { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem1); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len(values0)), 64) | 
 | 		for _, elem1 := range values0 { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := elem1.Encode(encoder); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } | 
 |  | 
 | var mojomFileGraph_Versions []bindings.DataHeader = []bindings.DataHeader{ | 
 | 	bindings.DataHeader{32, 0}, | 
 | } | 
 |  | 
 | func (s *MojomFileGraph) Decode(decoder *bindings.Decoder) error { | 
 | 	header, err := decoder.StartStruct() | 
 | 	if err != nil { | 
 | 		return err | 
 | 	} | 
 | 	index := sort.Search(len(mojomFileGraph_Versions), func(i int) bool { | 
 | 		return mojomFileGraph_Versions[i].ElementsOrVersion >= header.ElementsOrVersion | 
 | 	}) | 
 | 	if index < len(mojomFileGraph_Versions) { | 
 | 		if mojomFileGraph_Versions[index].ElementsOrVersion > header.ElementsOrVersion { | 
 | 			index-- | 
 | 		} | 
 | 		expectedSize := mojomFileGraph_Versions[index].Size | 
 | 		if expectedSize != header.Size { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedStructHeader, | 
 | 				fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size), | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 		} else { | 
 | 			if err := decoder.StartMap(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			var keys0 []string | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(64) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					keys0 = make([]string, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						pointer2, err := decoder.ReadPointer() | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if pointer2 == 0 { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 						} else { | 
 | 							value2, err := decoder.ReadString() | 
 | 							if err != nil { | 
 | 								return err | 
 | 							} | 
 | 							keys0[i1] = value2 | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			var values0 []MojomFile | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(64) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					values0 = make([]MojomFile, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						pointer2, err := decoder.ReadPointer() | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if pointer2 == 0 { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 						} else { | 
 | 							if err := values0[i1].Decode(decoder); err != nil { | 
 | 								return err | 
 | 							} | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			if len(keys0) != len(values0) { | 
 | 				return &bindings.ValidationError{bindings.DifferentSizedArraysInMap, | 
 | 					fmt.Sprintf("Number of keys %d is different from number of values %d", len(keys0), len(values0)), | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			len0 := len(keys0) | 
 | 			map0 := make(map[string]MojomFile) | 
 | 			for i0 := 0; i0 < len0; i0++ { | 
 | 				map0[keys0[i0]] = values0[i0] | 
 | 			} | 
 | 			s.Files = map0 | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 		} else { | 
 | 			if err := decoder.StartMap(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			var keys0 []string | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(64) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					keys0 = make([]string, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						pointer2, err := decoder.ReadPointer() | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if pointer2 == 0 { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 						} else { | 
 | 							value2, err := decoder.ReadString() | 
 | 							if err != nil { | 
 | 								return err | 
 | 							} | 
 | 							keys0[i1] = value2 | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			var values0 []mojom_types.UserDefinedType | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(128) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					values0 = make([]mojom_types.UserDefinedType, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						var err error | 
 | 						values0[i1], err = mojom_types.DecodeUserDefinedType(decoder) | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if values0[i1] == nil { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullUnion, "unexpected null union"} | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			if len(keys0) != len(values0) { | 
 | 				return &bindings.ValidationError{bindings.DifferentSizedArraysInMap, | 
 | 					fmt.Sprintf("Number of keys %d is different from number of values %d", len(keys0), len(values0)), | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			len0 := len(keys0) | 
 | 			map0 := make(map[string]mojom_types.UserDefinedType) | 
 | 			for i0 := 0; i0 < len0; i0++ { | 
 | 				map0[keys0[i0]] = values0[i0] | 
 | 			} | 
 | 			s.ResolvedTypes = map0 | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 		} else { | 
 | 			if err := decoder.StartMap(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			var keys0 []string | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(64) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					keys0 = make([]string, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						pointer2, err := decoder.ReadPointer() | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if pointer2 == 0 { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 						} else { | 
 | 							value2, err := decoder.ReadString() | 
 | 							if err != nil { | 
 | 								return err | 
 | 							} | 
 | 							keys0[i1] = value2 | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			var values0 []mojom_types.DeclaredConstant | 
 | 			{ | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					len1, err := decoder.StartArray(64) | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					values0 = make([]mojom_types.DeclaredConstant, len1) | 
 | 					for i1 := uint32(0); i1 < len1; i1++ { | 
 | 						pointer2, err := decoder.ReadPointer() | 
 | 						if err != nil { | 
 | 							return err | 
 | 						} | 
 | 						if pointer2 == 0 { | 
 | 							return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 						} else { | 
 | 							if err := values0[i1].Decode(decoder); err != nil { | 
 | 								return err | 
 | 							} | 
 | 						} | 
 | 					} | 
 | 					if err := decoder.Finish(); err != nil { | 
 | 						return err | 
 | 					} | 
 | 				} | 
 | 			} | 
 | 			if len(keys0) != len(values0) { | 
 | 				return &bindings.ValidationError{bindings.DifferentSizedArraysInMap, | 
 | 					fmt.Sprintf("Number of keys %d is different from number of values %d", len(keys0), len(values0)), | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			len0 := len(keys0) | 
 | 			map0 := make(map[string]mojom_types.DeclaredConstant) | 
 | 			for i0 := 0; i0 < len0; i0++ { | 
 | 				map0[keys0[i0]] = values0[i0] | 
 | 			} | 
 | 			s.ResolvedConstants = map0 | 
 | 		} | 
 | 	} | 
 | 	if err := decoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } | 
 |  | 
 | type KeysByType struct { | 
 | 	Interfaces        *[]string | 
 | 	Structs           *[]string | 
 | 	Unions            *[]string | 
 | 	TopLevelEnums     *[]string | 
 | 	EmbeddedEnums     *[]string | 
 | 	TopLevelConstants *[]string | 
 | 	EmbeddedConstants *[]string | 
 | } | 
 |  | 
 | func (s *KeysByType) Encode(encoder *bindings.Encoder) error { | 
 | 	encoder.StartStruct(56, 0) | 
 | 	if s.Interfaces == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.Interfaces))), 64) | 
 | 		for _, elem0 := range *s.Interfaces { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.Structs == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.Structs))), 64) | 
 | 		for _, elem0 := range *s.Structs { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.Unions == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.Unions))), 64) | 
 | 		for _, elem0 := range *s.Unions { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.TopLevelEnums == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.TopLevelEnums))), 64) | 
 | 		for _, elem0 := range *s.TopLevelEnums { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.EmbeddedEnums == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.EmbeddedEnums))), 64) | 
 | 		for _, elem0 := range *s.EmbeddedEnums { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.TopLevelConstants == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.TopLevelConstants))), 64) | 
 | 		for _, elem0 := range *s.TopLevelConstants { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if s.EmbeddedConstants == nil { | 
 | 		encoder.WriteNullPointer() | 
 | 	} else { | 
 | 		if err := encoder.WritePointer(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 		encoder.StartArray(uint32(len((*s.EmbeddedConstants))), 64) | 
 | 		for _, elem0 := range *s.EmbeddedConstants { | 
 | 			if err := encoder.WritePointer(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 			if err := encoder.WriteString(elem0); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 		if err := encoder.Finish(); err != nil { | 
 | 			return err | 
 | 		} | 
 | 	} | 
 | 	if err := encoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } | 
 |  | 
 | var keysByType_Versions []bindings.DataHeader = []bindings.DataHeader{ | 
 | 	bindings.DataHeader{64, 0}, | 
 | } | 
 |  | 
 | func (s *KeysByType) Decode(decoder *bindings.Decoder) error { | 
 | 	header, err := decoder.StartStruct() | 
 | 	if err != nil { | 
 | 		return err | 
 | 	} | 
 | 	index := sort.Search(len(keysByType_Versions), func(i int) bool { | 
 | 		return keysByType_Versions[i].ElementsOrVersion >= header.ElementsOrVersion | 
 | 	}) | 
 | 	if index < len(keysByType_Versions) { | 
 | 		if keysByType_Versions[index].ElementsOrVersion > header.ElementsOrVersion { | 
 | 			index-- | 
 | 		} | 
 | 		expectedSize := keysByType_Versions[index].Size | 
 | 		if expectedSize != header.Size { | 
 | 			return &bindings.ValidationError{bindings.UnexpectedStructHeader, | 
 | 				fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size), | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.Interfaces = nil | 
 | 		} else { | 
 | 			s.Interfaces = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.Interfaces) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.Interfaces)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.Structs = nil | 
 | 		} else { | 
 | 			s.Structs = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.Structs) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.Structs)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.Unions = nil | 
 | 		} else { | 
 | 			s.Unions = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.Unions) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.Unions)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.TopLevelEnums = nil | 
 | 		} else { | 
 | 			s.TopLevelEnums = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.TopLevelEnums) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.TopLevelEnums)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.EmbeddedEnums = nil | 
 | 		} else { | 
 | 			s.EmbeddedEnums = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.EmbeddedEnums) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.EmbeddedEnums)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.TopLevelConstants = nil | 
 | 		} else { | 
 | 			s.TopLevelConstants = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.TopLevelConstants) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.TopLevelConstants)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if header.ElementsOrVersion >= 0 { | 
 | 		pointer0, err := decoder.ReadPointer() | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		if pointer0 == 0 { | 
 | 			s.EmbeddedConstants = nil | 
 | 		} else { | 
 | 			s.EmbeddedConstants = new([]string) | 
 | 			len0, err := decoder.StartArray(64) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			(*s.EmbeddedConstants) = make([]string, len0) | 
 | 			for i0 := uint32(0); i0 < len0; i0++ { | 
 | 				pointer1, err := decoder.ReadPointer() | 
 | 				if err != nil { | 
 | 					return err | 
 | 				} | 
 | 				if pointer1 == 0 { | 
 | 					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"} | 
 | 				} else { | 
 | 					value1, err := decoder.ReadString() | 
 | 					if err != nil { | 
 | 						return err | 
 | 					} | 
 | 					(*s.EmbeddedConstants)[i0] = value1 | 
 | 				} | 
 | 			} | 
 | 			if err := decoder.Finish(); err != nil { | 
 | 				return err | 
 | 			} | 
 | 		} | 
 | 	} | 
 | 	if err := decoder.Finish(); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	return nil | 
 | } |