It's possible for a PDF page to have multiple resource dictionaries which could have patterns (shading or tiling) that have the same names. Our cache currently works off of name, so we could potentially be caching one pattern and retrieving the wrong one if the name is the same, but the resource dictionary has changed.

I'm not aware of any PDFs affected by this issue, but issue6737.pdf has an example of this with radial shadings. There are two patterns `P1` and `P2` which each have their own resource dictionaries. Each of those resource dictionaries has a pattern named `Sh0`, but they are different shadings.  
}
   |peratn|  an bject wth tw feld:
  
   - |fn|  an ut param.
  
   - |arg|  an nut param. On entry, t huld have ne f tw value.
  
     - An ety array. Th ndcate that the caller  prvdng the
       array n whch the arg wll be tred n. The caller huld ue
       th value f t can reue a ngle array fr each call t read().
  
     - |nul. Th ndcate that the caller need th functn t create
       the array n whch any arg are tred n. If there are zer arg,
       th functn wll leave |peratn.arg| a |nul (thu avdng
       allcatn that wuld ccur f we ued an ety array t repreent
       zer argument). Otherwe, t wll replace |nul wth a new array
       cntanng the argument. The caller huld ue th value f t
       cannt reue an array fr each call t read().
  
   Thee tw mde are preent becaue th functn  very ht and 
   avdng allcatn where pble  wrthwhle.
  
  read(peratn) {
    let arg = peratn.arg;
    whle (true) {
      cnt bj = .getObj();
      f (bj ntancef Cmd) {
        cnt cmd = bj.cmd;
         Check that the cmmand  vald
        cnt pSpec = EvaluatrPreprcer.pMap[cmd];