code: func (s *Store) GetPvtDataAndBlockByNum(blockNum uint64, filter ledger.PvtNsCollFilter) (*ledger.BlockAndPvtData, error) {
  	s.rwlock.RLock()
  	defer s.rwlock.RUnlock()
  
  	var block *common.Block
  	var pvtdata []*ledger.TxPvtData
  	var err error
  	if block, err = s.RetrieveBlockByNumber(blockNum); err != nil {
  		return nil, err
  	}
  	if pvtdata, err = s.getPvtDataByNumWithoutLock(blockNum, filter); err != nil {
  		return nil, err
  	}
  	return &ledger.BlockAndPvtData{Block: block, PvtData: constructPvtdataMap(pvtdata)}, nil
  }
docs: // GetPvtDataAndBlockByNum returns the block and the corresponding pvt data.
  // The pvt data is filtered by the list of 'collections' supplied