docs: func goType(s *Shape, withPkgName bool) string {
  	switch s.Type {
  	case "structure":
  		if withPkgName || s.resolvePkg != "" {
  			pkg := s.resolvePkg
  			if pkg != "" {
  				s.API.imports[pkg] = true
  				pkg = path.Base(pkg)
  			} else {
  				pkg = s.API.PackageName()
  			}
  			return fmt.Sprintf("*%s.%s", pkg, s.ShapeName)
  		}
  		return "*" + s.ShapeName
  	case "map":
  		return "map[string]" + goType(s.ValueRef.Shape, withPkgName)
  	case "jsonvalue":
  		return "aws.JSONValue"
  	case "list":
  		return "[]" + goType(s.MemberRef.Shape, withPkgName)
  	case "boolean":
  		return "*bool"
  	case "string", "character":
  		return "*string"
  	case "blob":
  		return "[]byte"
  	case "byte", "short", "integer", "long":
  		return "*int64"
  	case "float", "double":
  		return "*float64"
  	case "timestamp":
  		s.API.imports["time"] = true
  		return "*time.Time"
  	default:
  		panic("Unsupported shape type: " + s.Type)
  	}
  }