code: public BufferedImage getImage (ImageKey key, Colorization[] zations)
      {
          CacheRecord crec = null;
          synchronized (_ccache) {
              crec = _ccache.get(key);
          }
          if (crec != null) {
  //             log.info("Cache hit", "key", key, "crec", crec);
              return crec.getImage(zations, _ccache);
          }
  //         log.info("Cache miss", "key", key, "crec", crec);
  
          // load up the raw image
          BufferedImage image = loadImage(key);
          if (image == null) {
              log.warning("Failed to load image " + key + ".");
              // create a blank image instead
              image = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_INDEXED);
          }
  
  //         log.info("Loaded Image", "path", key.path, "image", image,
  //                  "size", ImageUtil.getEstimatedMemoryUsage(image));
  
          // create a cache record
          crec = new CacheRecord(key, image);
          synchronized (_ccache) {
              _ccache.put(key, crec);
          }
          _keySet.add(key);
  
          // periodically report our image cache performance
          reportCachePerformance();
  
          return crec.getImage(zations, _ccache);
      }
docs: Obtains the image identified by the specified key, caching if possible. The image will be
  recolored using the supplied colorizations if requested.