template/scratch.go
func (s *Scratch) MapSetX(k, mk string, v interface{}) (string, error) {
	s.init()

	s.Lock()
	defer s.Unlock()
	return s.mapSet(k, mk, v, false)
}
func (s *Scratch) MapSetX(k, mk string, v interface{}) (string, error) {
	s.init()

	s.Lock()
	defer s.Unlock()
	return s.mapSet(k, mk, v, false)
}
// MapSetX behaves the same as MapSet, except it will not overwrite the map
// key if it already exists.