func treeFunc(b *Brain, used, missing *dep.Set) func(string) ([]*dep.KeyPair, error) {
	return func(s string) ([]*dep.KeyPair, error) {
		result := []*dep.KeyPair{}

		if len(s) == 0 {
			return result, nil
		}

		d, err := dep.NewKVListQuery(s)
		if err != nil {
			return result, err
		}

		used.Add(d)

		// Only return non-empty top-level keys
		if value, ok := b.Recall(d); ok {
			for _, pair := range value.([]*dep.KeyPair) {
				parts := strings.Split(pair.Key, "/")
				if parts[len(parts)-1] != "" {
					result = append(result, pair)
				}
			}
			return result, nil
		}

		missing.Add(d)

		return result, nil
	}
}
func treeFunc(b *Brain, used, missing *dep.Set) func(string) ([]*dep.KeyPair, error) {
	return func(s string) ([]*dep.KeyPair, error) {
		result := []*dep.KeyPair{}

		if len(s) == 0 {
			return result, nil
		}

		d, err := dep.NewKVListQuery(s)
		if err != nil {
			return result, err
		}

		used.Add(d)

		
		if value, ok := b.Recall(d); ok {
			for _, pair := range value.([]*dep.KeyPair) {
				parts := strings.Split(pair.Key, "/")
				if parts[len(parts)-1] != "" {
					result = append(result, pair)
				}
			}
			return result, nil
		}

		missing.Add(d)

		return result, nil
	}
}
func treeFunc ( b * Brain , used , missing * dep . Set ) func ( string ) ( [ ] * dep . KeyPair , error ) { return func ( s string ) ( [ ] * dep . KeyPair , error ) { result := [ ] * dep . KeyPair { } if len ( s ) == 0 { return result , nil } d , err := dep . NewKVListQuery ( s ) if err != nil { return result , err } used . Add ( d ) // Only return non-empty top-level keys if value , ok := b . Recall ( d ) ; ok { for _ , pair := range value . ( [ ] * dep . KeyPair ) { parts := strings . Split ( pair . Key , " " ) if parts [ len ( parts ) - 1 ] != " " { result = append ( result , pair ) } } return result , nil } missing . Add ( d ) return result , nil } }
// treeFunc returns or accumulates keyPrefix dependencies.
treeFunc returns or accumulates keyPrefix dependencies .