// nodeWalk recursively descends nodes, updating vars.
nodeWalk recursively descends nodes, updating vars.
// nodeWalk recursively descends nodes updating vars .
func nodeWalk(node map[interface{}]interface{}, key string, vars map[string]string) error {
	for k, v := range node {
		key := key + "/" + k.(string)
		switch v.(type) {
		case map[interface{}]interface{}:
			nodeWalk(v.(map[interface{}]interface{}), key, vars)
		case []interface{}:
			for _, j := range v.([]interface{}) {
				switch j.(type) {
				case map[interface{}]interface{}:
					nodeWalk(j.(map[interface{}]interface{}), key, vars)
				case string:
					vars[key+"/"+j.(string)] = ""
				}
			}
		case string:
			vars[key] = v.(string)
		}
	}
	return nil
}
func nodeWalk ( node map [ interface { } ] interface { } , key string , vars map [ string ] string ) error { for k , v := range node { key := key + " " + k . ( string ) switch v . ( type ) { case map [ interface { } ] interface { } : nodeWalk ( v . ( map [ interface { } ] interface { } ) , key , vars ) case [ ] interface { } : for _ , j := range v . ( [ ] interface { } ) { switch j . ( type ) { case map [ interface { } ] interface { } : nodeWalk ( j . ( map [ interface { } ] interface { } ) , key , vars ) case string : vars [ key + " " + j . ( string ) ] = " " } } case string : vars [ key ] = v . ( string ) } } return nil }
nodeWalk recursively descends nodes, updating vars.
nodeWalk recursively descends nodes updating vars .