You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: output.go
    path of file: ./repos/typeshare/core/data/tests/can_generate_algebraic_enum
    
    the code of the file until where you have to start completion: package proto

import "encoding/json"

// Struct comment
type ItemDetailsFieldValue struct {
}
// Enum comment
type AdvancedColorsTypes string
const (
	// This is a case comment
	AdvancedColorsTypeVariantString AdvancedColorsTypes = "String"
	AdvancedColorsTypeVariantNumber AdvancedColorsTypes = "Number"
	AdvancedColorsTypeVariantUnsignedNumber AdvancedColorsTypes = "UnsignedNumber"
	AdvancedColorsTypeVariantNumberArray AdvancedColorsTypes = "NumberArray"
	// Comment on the last element
	AdvancedColorsTypeVariantReallyCoolType AdvancedColorsTyp
    
func (a *AdvancedColors) UnmarshalJSON(data []byte) error {
	var enum struct {
		Tag    AdvancedColorsTypes   `json:"type"`
		Content json.RawMessage `json:"content"`
	}
	if err := json.Unmarshal(data, &enum); err != nil {
		return err
	}

	a.Type = enum.Tag
	switch a.Type {
	case AdvancedColorsTypeVariantString:
		var res string
		a.content = &res
	case AdvancedColorsTypeVariantNumber:
		var res int
		a.content = &res
	case AdvancedColorsTypeVariantUnsignedNumber:
		var res uint32
		a.content = &res
	case AdvancedColorsTypeVariantNumberArray:
		var res []int
		a.content = &res
	case AdvancedColorsTypeVariantReallyCoolType:
		var res ItemDetailsFieldValue
		a.content = &res

	}
	if err := json.Unmarshal(enum.Content, &a.content); err != nil {
		return err
	}

	return nil
}