1348
case fieldKindSubMap:
1349
if collectionNode, found := n.children[field.name]; found {
1350
>
mapFieldV := field.val
tree.go
1351
>
if mapFieldV.IsNil() {
1352
>
mapFieldV = reflect.MakeMapWithSize(field.typ, field.val.Len())
1353
>
field.val.Set(mapFieldV)
1354
>
}
1355
1356
>
for collectionItemName, collectionItemNode := range collectionNode.children {
tree.go
1357
>
// field.typ.Elem() is a go type of map item: Field[T]
1358
>
chasmFieldV := reflect.New(field.typ.Elem()).Elem()
1359
>
internalValue := reflect.ValueOf(newFieldInternalWithNode(collectionItemNode))
1360
>
chasmFieldV.FieldByName(internalFieldName).Set(internalValue)
1361
>
mapKeyV, err := n.stringToMapKey(field.name, collectionItemName, mapFieldV.Type().Key())
1362
>
if err != nil {
1363
return err
1364
}
1365
>
mapFieldV.SetMapIndex(mapKeyV, chasmFieldV)
tree.go
1366
}
1367
} else if field.val.IsNil() {