ImageData imageData = (ImageData) imageHash.get(key);
ImageData imageData = getImage(key);
  public void updateImage() {    if (!imageUpdate)      return;        Image newImage;    ImageData backgroundData = transparencyManager.getBackground(label);    ImageData imageData = (ImageData) imageHash.get(key);    if (imageData == null) {      String text = (String) textHash.get(key);      if (text == null)        return;            /* Get the background image. */      GC gc;      if (backgroundData == null)      {        Rectangle bounds = getBounds();        newImage = new Image(label.getDisplay(), bounds.width, bounds.height);        gc = new GC(newImage);        gc.setBackground(getBackground());        gc.fillRectangle(0, 0, bounds.width, bounds.height);      }      else {        newImage = new Image(label.getDisplay(), backgroundData);        gc = new GC(newImage);      }            /* Draw the text onto it. */      gc.drawText(text, 0, 0, true);      gc.dispose();      System.out.println("Text: " + text);    }    else {      ImageData mergedImageData;      if (backgroundData == null) {        Rectangle bounds = getBounds();        int x = (bounds.width - imageData.width) / 2;        int y = (bounds.height - imageData.height) / 2;        mergedImageData = imageMerger.merge(getBackground(), imageData);       }      else {        int x = (backgroundData.width - imageData.width) / 2;        int y = (backgroundData.height - imageData.height) / 2;        mergedImageData = imageMerger.merge(backgroundData, x, y, imageData);      }      newImage = new Image(label.getDisplay(), mergedImageData);    }        synchronized (lock) {      label.setImage(newImage);      if (image != null)        image.dispose();      image = newImage;    }  }