func PathsForKey(m map[string]interface{}, key string) []string {
	breadbasket := make(map[string]bool,0)
	breadcrumb := ""
	hasKeyPath(breadcrumb, m, key, &breadbasket)
	if len(breadbasket) == 0 {
		return nil
	}
	res := make([]string,len(breadbasket))
	var i int
	for k,_ := range breadbasket {
		res[i] = k
		i++
	}
	return res
}
Get all paths through the map (in dot-notation) that terminate with the specified key.
Results can be used with ValuesAtKeyPath() and ValuesFromKeyPath().
package x2j
import (
	"strings"
)
func PathsForTag(doc string, key string) ([]string, error) {
	m, err := DocToMap(doc)
	if err != nil {
		return nil, err
	}
	ss := PathsForKey(m, key)
	return ss, nil
}
func PathForTagShortest(doc string, key string) (string, error) {
	m, err := DocToMap(doc)
	if err != nil {
		return "", err
	}
	s := PathForKeyShortest(m, key)
	return s, nil
}
func BytePathsForTag(doc []byte, key string) ([]string, error) {
	m, err := ByteDocToMap(doc)
	if err != nil {
		return nil, err
	}
	ss := PathsForKey(m, key)
	return ss, nil
}
func BytePathForTagShortest(doc []byte, key string) (string, error) {
	m, err := ByteDocToMap(doc)
	if err != nil {
		return "", err
	}
	s := PathForKeyShortest(m, key)
	return s, nil
}