code: func (s *SelfClient) Get(ctx context.Context, token string) (*apitypes.Self, error) {
  	raw := &rawSelf{}
  	err := tokenRoundTrip(ctx, s.client, token, "GET", "/self", nil, nil, raw)
  	if err != nil {
  		return nil, err
  	}
  
  	self := raw.Self
  	switch raw.Type {
  	case apitypes.UserSession:
  		user, err := envelope.ConvertUser(raw.Identity)
  		if err != nil {
  			return nil, err
  		}
  
  		self.Identity = user
  		self.Auth = user
  	case apitypes.MachineSession:
  		self.Identity = &envelope.Machine{
  			ID:      raw.Identity.ID,
  			Version: raw.Identity.Version,
  			Body:    raw.Identity.Body.(*primitive.Machine),
  		}
  		self.Auth = &envelope.MachineToken{
  			ID:      raw.Auth.ID,
  			Version: raw.Auth.Version,
  			Body:    raw.Auth.Body.(*primitive.MachineToken),
  		}
  	default:
  		return nil, errUnknownSessionType
  	}
  
  	return self, nil
  }
docs: // Get returns the current identities associated with this token