docs: public synchronized void matchNode(RenderCallback renderCallback, final RenderContext renderContext, PointOfInterest poi) {
          MatchingCacheKey matchingCacheKey = new MatchingCacheKey(poi.tags, renderContext.rendererJob.tile.zoomLevel, Closed.NO);
  
          List<RenderInstruction> matchingList = this.poiMatchingCache.get(matchingCacheKey);
          if (matchingList != null) {
              // cache hit
              for (int i = 0, n = matchingList.size(); i < n; ++i) {
                  matchingList.get(i).renderNode(renderCallback, renderContext, poi);
              }
              return;
          }
  
          // cache miss
          matchingList = new ArrayList<RenderInstruction>();
  
          for (int i = 0, n = this.rulesList.size(); i < n; ++i) {
              this.rulesList.get(i).matchNode(renderCallback, renderContext, matchingList, poi);
          }
          this.poiMatchingCache.put(matchingCacheKey, matchingList);
      }