code: func parseSelector(selector string) ([]byte, error) {
  	// Define a tiny fake ABI struct for JSON marshalling
  	type fakeArg struct {
  		Type string `json:"type"`
  	}
  	type fakeABI struct {
  		Name   string    `json:"name"`
  		Type   string    `json:"type"`
  		Inputs []fakeArg `json:"inputs"`
  	}
  	// Validate the selector and extract it's components
  	groups := selectorRegexp.FindStringSubmatch(selector)
  	if len(groups) != 3 {
  		return nil, fmt.Errorf("invalid selector %s (%v matches)", selector, len(groups))
  	}
  	name := groups[1]
  	args := groups[2]
  
  	// Reassemble the fake ABI and constuct the JSON
  	arguments := make([]fakeArg, 0)
  	if len(args) > 0 {
  		for _, arg := range strings.Split(args, ",") {
  			arguments = append(arguments, fakeArg{arg})
  		}
  	}
  	return json.Marshal([]fakeABI{{name, "function", arguments}})
  }
docs: // parseSelector converts a method selector into an ABI JSON spec. The returned
  // data is a valid JSON string which can be consumed by the standard abi package.