code: func bindUnnestedTypeGo(stringKind string) (int, string) {
  
  	switch {
  	case strings.HasPrefix(stringKind, "address"):
  		return len("address"), "common.Address"
  
  	case strings.HasPrefix(stringKind, "bytes"):
  		parts := regexp.MustCompile(`bytes([0-9]*)`).FindStringSubmatch(stringKind)
  		return len(parts[0]), fmt.Sprintf("[%s]byte", parts[1])
  
  	case strings.HasPrefix(stringKind, "int") || strings.HasPrefix(stringKind, "uint"):
  		parts := regexp.MustCompile(`(u)?int([0-9]*)`).FindStringSubmatch(stringKind)
  		switch parts[2] {
  		case "8", "16", "32", "64":
  			return len(parts[0]), fmt.Sprintf("%sint%s", parts[1], parts[2])
  		}
  		return len(parts[0]), "*big.Int"
  
  	case strings.HasPrefix(stringKind, "bool"):
  		return len("bool"), "bool"
  
  	case strings.HasPrefix(stringKind, "string"):
  		return len("string"), "string"
  
  	default:
  		return len(stringKind), stringKind
  	}
  }
docs: // The inner function of bindTypeGo, this finds the inner type of stringKind.
  // (Or just the type itself if it is not an array or slice)
  // The length of the matched part is returned, with the translated type.