func MergeIntUint16(map1, map2 map[int]uint16) map[int]uint16 {
	if map1 == nil && map2 == nil {
		return map[int]uint16{}
	}
	newMap := make(map[int]uint16)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
MergeIntUint16 takes two inputs: map[int]uint16 and map[int]uint16 and merge two maps and returns a new map[int]uint16.
package fp
func MergeInt(map1, map2 map[int]int) map[int]int {
	if map1 == nil && map2 == nil {
		return map[int]int{}
	}
	newMap := make(map[int]int)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt64(map1, map2 map[int]int64) map[int]int64 {
	if map1 == nil && map2 == nil {
		return map[int]int64{}
	}
	newMap := make(map[int]int64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt32(map1, map2 map[int]int32) map[int]int32 {
	if map1 == nil && map2 == nil {
		return map[int]int32{}
	}
	newMap := make(map[int]int32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt16(map1, map2 map[int]int16) map[int]int16 {
	if map1 == nil && map2 == nil {
		return map[int]int16{}
	}
	newMap := make(map[int]int16)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt8(map1, map2 map[int]int8) map[int]int8 {
	if map1 == nil && map2 == nil {
		return map[int]int8{}
	}
	newMap := make(map[int]int8)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint(map1, map2 map[int]uint) map[int]uint {
	if map1 == nil && map2 == nil {
		return map[int]uint{}
	}
	newMap := make(map[int]uint)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint64(map1, map2 map[int]uint64) map[int]uint64 {
	if map1 == nil && map2 == nil {
		return map[int]uint64{}
	}
	newMap := make(map[int]uint64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint32(map1, map2 map[int]uint32) map[int]uint32 {
	if map1 == nil && map2 == nil {
		return map[int]uint32{}
	}
	newMap := make(map[int]uint32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}