code: func deriveKeys(expiryEntry *expiryEntry) (dataKeys []*dataKey, missingDataKeys []*missingDataKey) {
  	for ns, colls := range expiryEntry.value.Map {
  		// 1. constructs dataKeys of expired existing pvt data
  		for coll, txNums := range colls.Map {
  			for _, txNum := range txNums.List {
  				dataKeys = append(dataKeys,
  					&dataKey{nsCollBlk{ns, coll, expiryEntry.key.committingBlk}, txNum})
  			}
  		}
  		// 2. constructs missingDataKeys of expired missing pvt data
  		for coll := range colls.MissingDataMap {
  			// one key for eligible entries and another for ieligible entries
  			missingDataKeys = append(missingDataKeys,
  				&missingDataKey{nsCollBlk{ns, coll, expiryEntry.key.committingBlk}, true})
  			missingDataKeys = append(missingDataKeys,
  				&missingDataKey{nsCollBlk{ns, coll, expiryEntry.key.committingBlk}, false})
  
  		}
  	}
  	return
  }
docs: // deriveKeys constructs dataKeys and missingDataKey from an expiryEntry