code: func handleHelp(s *rpcServer, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) {
  	c := cmd.(*btcjson.HelpCmd)
  
  	// Provide a usage overview of all commands when no specific command
  	// was specified.
  	var command string
  	if c.Command != nil {
  		command = *c.Command
  	}
  	if command == "" {
  		usage, err := s.helpCacher.rpcUsage(false)
  		if err != nil {
  			context := "Failed to generate RPC usage"
  			return nil, internalRPCError(err.Error(), context)
  		}
  		return usage, nil
  	}
  
  	// Check that the command asked for is supported and implemented.  Only
  	// search the main list of handlers since help should not be provided
  	// for commands that are unimplemented or related to wallet
  	// functionality.
  	if _, ok := rpcHandlers[command]; !ok {
  		return nil, &btcjson.RPCError{
  			Code:    btcjson.ErrRPCInvalidParameter,
  			Message: "Unknown command: " + command,
  		}
  	}
  
  	// Get the help for the command.
  	help, err := s.helpCacher.rpcMethodHelp(command)
  	if err != nil {
  		context := "Failed to generate help"
  		return nil, internalRPCError(err.Error(), context)
  	}
  	return help, nil
  }
docs: // handleHelp implements the help command.