code: func StringSliceReplaceAt(s, old, new []string, requireIndex int) ([]string, bool) {
  	idx := stringSliceIndex(s, old)
  	if (requireIndex != -1 && requireIndex != idx) || idx == -1 {
  		return s, false
  	}
  	out := append([]string{}, s[:idx]...)
  	out = append(out, new...)
  	out = append(out, s[idx+len(old):]...)
  	return out, true
  }
docs: // StringSliceReplaceAt replaces the sub-slice old, with the sub-slice new, in the string
  // slice s, returning a new slice and a boolean indicating if the replacement happened.
  // requireIdx is the index at which old needs to be found at (or -1 to disregard that).