code: func lowerFirst(s string) string {
  	if s == "" {
  		return ""
  	}
  
  	str := ""
  	strlen := len(s)
  
  	/**
  	  Loop each char
  	  If is uppercase:
  	    If is first char, LOWER it
  	    If the following char is lower, LEAVE it
  	    If the following char is upper OR numeric, LOWER it
  	    If is the end of string, LEAVE it
  	  Else lowercase
  	*/
  
  	foundLower := false
  	for i := range s {
  		ch := s[i]
  		if isUpper(ch) {
  			switch {
  			case i == 0:
  				str += string(ch + 32)
  			case !foundLower: // Currently just a stream of capitals, eg JSONRESTS[erver]
  				if strlen > (i+1) && isLower(s[i+1]) {
  					// Next char is lower, keep this a capital
  					str += string(ch)
  				} else {
  					// Either at end of string or next char is capital
  					str += string(ch + 32)
  				}
  			default:
  				str += string(ch)
  			}
  		} else {
  			foundLower = true
  			str += string(ch)
  		}
  	}
  
  	return str
  }
docs: // convert HTTPRestClient to httpRestClient