public synchronized boolean cacheClean()
  {
    long l = System.currentTimeMillis();

    Enumeration localEnumeration = this.images.elements();
    while (localEnumeration.hasMoreElements())
    {
      ImageTrack localImageTrack = (ImageTrack)localEnumeration.nextElement();

      int i = checkImage(localImageTrack.image, this);

      int j = (i & 0x20) != 0 ? 1 : 0;
      String str1;
      if ((str1 = (String)this.imageFilename.get(localImageTrack.image)) != null) {
        for (int k = 0; (j != 0) && (k < this.ImageCacheActiveList.size()); k++)
        {
          String str2 = (String)this.ImageCacheActiveList.elementAt(k);
          if (str1.indexOf(str2) >= 0)
            j = 0;
        }
      }
      if ((localImageTrack.time == -1L) || (j == 0) || (localImageTrack.time + 20000L >= l))
      {
        continue;
      }

      localImageTrack.time = -1L;
      localImageTrack.image.flush();
    }

    Runtime.getRuntime().gc();

    return true;
  }