code: func (c *helpCacher) rpcUsage(includeWebsockets bool) (string, error) {
  	c.Lock()
  	defer c.Unlock()
  
  	// Return the cached usage if it is available.
  	if c.usage != "" {
  		return c.usage, nil
  	}
  
  	// Generate a list of one-line usage for every command.
  	usageTexts := make([]string, 0, len(rpcHandlers))
  	for k := range rpcHandlers {
  		usage, err := btcjson.MethodUsageText(k)
  		if err != nil {
  			return "", err
  		}
  		usageTexts = append(usageTexts, usage)
  	}
  
  	// Include websockets commands if requested.
  	if includeWebsockets {
  		for k := range wsHandlers {
  			usage, err := btcjson.MethodUsageText(k)
  			if err != nil {
  				return "", err
  			}
  			usageTexts = append(usageTexts, usage)
  		}
  	}
  
  	sort.Sort(sort.StringSlice(usageTexts))
  	c.usage = strings.Join(usageTexts, "\n")
  	return c.usage, nil
  }
docs: // rpcUsage returns one-line usage for all support RPC commands.
  //
  // This function is safe for concurrent access.