package reflect2

import (
	
	
)

type safeMapType struct {
	safeType
}

func ( *safeMapType) () Type {
	return .safeType.cfg.Type2(.Type.Key())
}

func ( *safeMapType) ( int) interface{} {
	 := reflect.New(.Type)
	.Elem().Set(reflect.MakeMap(.Type))
	return .Interface()
}

func ( *safeMapType) ( int) unsafe.Pointer {
	panic("does not support unsafe operation")
}

func ( *safeMapType) ( interface{},  interface{},  interface{}) {
	 := reflect.ValueOf()
	 := reflect.ValueOf()
	 := reflect.ValueOf()
	.Elem().SetMapIndex(.Elem(), .Elem())
}

func ( *safeMapType) ( unsafe.Pointer,  unsafe.Pointer,  unsafe.Pointer) {
	panic("does not support unsafe operation")
}

func ( *safeMapType) ( interface{},  interface{}) (interface{}, bool) {
	 := reflect.ValueOf()
	if  == nil {
		 = reflect.New(.Type.Key()).Elem()
	}
	 := reflect.ValueOf().MapIndex()
	if !.IsValid() {
		return nil, false
	}
	return .Interface(), true
}

func ( *safeMapType) ( interface{},  interface{}) interface{} {
	 := reflect.ValueOf().Elem()
	 := reflect.ValueOf().Elem()
	 := .MapIndex()
	if !.IsValid() {
		 := reflect.New(reflect.PtrTo(.Type().Elem()))
		return .Elem().Interface()
	}
	 := reflect.New(.Type())
	.Elem().Set()
	return .Interface()
}

func ( *safeMapType) ( unsafe.Pointer,  unsafe.Pointer) unsafe.Pointer {
	panic("does not support unsafe operation")
}

func ( *safeMapType) ( interface{}) MapIterator {
	 := reflect.ValueOf().Elem()
	return &safeMapIterator{
		m:    ,
		keys: .MapKeys(),
	}
}

func ( *safeMapType) ( unsafe.Pointer) MapIterator {
	panic("does not support unsafe operation")
}

type safeMapIterator struct {
	i    int
	m    reflect.Value
	keys []reflect.Value
}

func ( *safeMapIterator) () bool {
	return .i != len(.keys)
}

func ( *safeMapIterator) () (interface{}, interface{}) {
	 := .keys[.i]
	 := .m.MapIndex()
	.i += 1
	 := reflect.New(.Type())
	.Elem().Set()
	 := reflect.New(.Type())
	.Elem().Set()
	return .Interface(), .Interface()
}

func ( *safeMapIterator) () (unsafe.Pointer, unsafe.Pointer) {
	panic("does not support unsafe operation")
}