code: func execModifier(json, path string) (pathOut, res string, ok bool) {
  	name := path[1:]
  	var hasArgs bool
  	for i := 1; i < len(path); i++ {
  		if path[i] == ':' {
  			pathOut = path[i+1:]
  			name = path[1:i]
  			hasArgs = len(pathOut) > 0
  			break
  		}
  		if !DisableChaining {
  			if path[i] == '|' {
  				pathOut = path[i:]
  				name = path[1:i]
  				break
  			}
  		}
  	}
  	if fn, ok := modifiers[name]; ok {
  		var args string
  		if hasArgs {
  			var parsedArgs bool
  			switch pathOut[0] {
  			case '{', '[', '"':
  				res := Parse(pathOut)
  				if res.Exists() {
  					_, args = parseSquash(pathOut, 0)
  					pathOut = pathOut[len(args):]
  					parsedArgs = true
  				}
  			}
  			if !parsedArgs {
  				idx := -1
  				if !DisableChaining {
  					idx = strings.IndexByte(pathOut, '|')
  				}
  				if idx == -1 {
  					args = pathOut
  					pathOut = ""
  				} else {
  					args = pathOut[:idx]
  					pathOut = pathOut[idx:]
  				}
  			}
  		}
  		return pathOut, fn(json, args), true
  	}
  	return pathOut, res, false
  }
docs: // execModifier parses the path to find a matching modifier function.
  // then input expects that the path already starts with a '@'