code: func ParseCarbonlinkRequest(d []byte) (*CarbonlinkRequest, error) {
  
  	if !(expectBytes(&d, []byte("\x80\x02}")) && pickleMaybeMemo(&d) && expectBytes(&d, []byte("("))) {
  		return nil, badErr
  	}
  
  	req := NewCarbonlinkRequest()
  
  	var Metric, Type string
  	var ok bool
  
  	if expectBytes(&d, []byte("U\x06metric")) {
  		if !pickleMaybeMemo(&d) {
  			return nil, badErr
  		}
  		if Metric, ok = pickleGetStr(&d); !ok {
  			return nil, badErr
  		}
  
  		if !(pickleMaybeMemo(&d) && expectBytes(&d, []byte("U\x04type")) && pickleMaybeMemo(&d)) {
  			return nil, badErr
  		}
  
  		if Type, ok = pickleGetStr(&d); !ok {
  			return nil, badErr
  		}
  
  		if !pickleMaybeMemo(&d) {
  			return nil, badErr
  		}
  
  		req.Metric = Metric
  		req.Type = Type
  	} else if expectBytes(&d, []byte("U\x04type")) {
  		if !pickleMaybeMemo(&d) {
  			return nil, badErr
  		}
  
  		if Type, ok = pickleGetStr(&d); !ok {
  			return nil, badErr
  		}
  
  		if !(pickleMaybeMemo(&d) && expectBytes(&d, []byte("U\x06metric")) && pickleMaybeMemo(&d)) {
  			return nil, badErr
  		}
  
  		if Metric, ok = pickleGetStr(&d); !ok {
  			return nil, badErr
  		}
  
  		if !pickleMaybeMemo(&d) {
  			return nil, badErr
  		}
  
  		req.Metric = Metric
  		req.Type = Type
  	} else {
  		return nil, badErr
  	}
  
  	return req, nil
  }
docs: // ParseCarbonlinkRequest from pickle encoded data