func (l List) With(keyvals ...interface{}) List {
	keyvals = flattenFix(keyvals)
	list := l.clone(len(l) + len(keyvals))
	list = append(list, keyvals...)
	return list
}
func (l List) With(keyvals ...interface{}) List {
	keyvals = flattenFix(keyvals)
	list := l.clone(len(l) + len(keyvals))
	list = append(list, keyvals...)
	return list
}
// With returns a new list with keyvals appended. The original
// list (l) is not modified.