code: func (k *KeyringSectionV2) FindMember(id *identity.ID) (*primitive.KeyringMember, *primitive.MEKShare, error) {
  	var krm *primitive.KeyringMember
  	var mekshare *primitive.MEKShare
  
  outerLoop:
  	for _, m := range k.Members {
  		if *m.Member.Body.OwnerID == *id {
  			// We've found the right owner. Now see if this membership is
  			// unrevoked.
  			// A revocation is always terminal for a claim chain, so if there's
  			// any revocations for this membership, we know it is invalid.
  			if krmIsRevoked(m, k.Claims) {
  				continue outerLoop
  			}
  
  			krm = m.Member.Body
  			// We never get the MEKShare for another user returned.
  			if m.MEKShare != nil {
  				mekshare = m.MEKShare.Body
  			}
  			break
  		}
  	}
  
  	if krm == nil {
  		return nil, nil, ErrMemberNotFound
  	}
  
  	return krm, mekshare, nil
  }
docs: // FindMember returns the membership and mekshare for the given user id.
  //
  // An owner (user/machine token) may have multiple memberships, one per
  // encryption key. There will only be one unrevoked membership.
  // Either this unrevoked membership will be returned, or the result will error
  // with ErrMemberNotFound.