docs: func (s *Shape) GoStructType(name string, ref *ShapeRef) string {
  	if (ref.Streaming || ref.Shape.Streaming) && s.Payload == name {
  		rtype := "io.ReadSeeker"
  		if strings.HasSuffix(s.ShapeName, "Output") {
  			rtype = "io.ReadCloser"
  		}
  
  		s.API.imports["io"] = true
  		return rtype
  	}
  
  	if ref.JSONValue {
  		s.API.AddSDKImport("aws")
  		return "aws.JSONValue"
  	}
  
  	for _, v := range s.Validations {
  		// TODO move this to shape validation resolution
  		if (v.Ref.Shape.Type == "map" || v.Ref.Shape.Type == "list") && v.Type == ShapeValidationNested {
  			s.API.imports["fmt"] = true
  		}
  	}
  
  	return ref.GoType()
  }