code: public VALUE get(KEY key) {
          CacheEntry<VALUE> entry;
          synchronized (this) {
              entry = values.get(key);
          }
          VALUE value;
          if (entry != null) {
              if (isExpiring) {
                  long age = System.currentTimeMillis() - entry.timeCreated;
                  if (age < expirationMillis) {
                      value = getValue(key, entry);
                  } else {
                      countExpired++;
                      synchronized (this) {
                          values.remove(key);
                      }
                      value = null;
                  }
              } else {
                  value = getValue(key, entry);
              }
          } else {
              value = null;
          }
          if (value != null) {
              countHit++;
          } else {
              countMiss++;
          }
          return value;
      }
docs: Get the cached entry or null if no valid cached entry is found.