code: func ParseURL(url string) (*DialInfo, error) {
  	uinfo, err := extractURL(url)
  	if err != nil {
  		return nil, err
  	}
  	direct := false
  	mechanism := ""
  	service := ""
  	source := ""
  	setName := ""
  	poolLimit := 0
  	for k, v := range uinfo.options {
  		switch k {
  		case "authSource":
  			source = v
  		case "authMechanism":
  			mechanism = v
  		case "gssapiServiceName":
  			service = v
  		case "replicaSet":
  			setName = v
  		case "maxPoolSize":
  			poolLimit, err = strconv.Atoi(v)
  			if err != nil {
  				return nil, errors.New("bad value for maxPoolSize: " + v)
  			}
  		case "connect":
  			if v == "direct" {
  				direct = true
  				break
  			}
  			if v == "replicaSet" {
  				break
  			}
  			fallthrough
  		default:
  			return nil, errors.New("unsupported connection URL option: " + k + "=" + v)
  		}
  	}
  	info := DialInfo{
  		Addrs:          uinfo.addrs,
  		Direct:         direct,
  		Database:       uinfo.db,
  		Username:       uinfo.user,
  		Password:       uinfo.pass,
  		Mechanism:      mechanism,
  		Service:        service,
  		Source:         source,
  		PoolLimit:      poolLimit,
  		ReplicaSetName: setName,
  	}
  	return &info, nil
  }
docs: // ParseURL parses a MongoDB URL as accepted by the Dial function and returns
  // a value suitable for providing into DialWithInfo.
  //
  // See Dial for more details on the format of url.