/** * Gets a cached equivalent abstraction for the given abstraction if we have * one, otherwise returns null * * @param abs The abstraction for which to perform a cache lookup * @return The cached abstraction equivalent to the given one of it exists, * otherwise null */ private Abstraction getCachedAbstraction(Abstraction abs) { Abstraction oldAbs = absCache.putIfAbsent(new AbstractionCacheKey(abs), abs); if (oldAbs != null && oldAbs != abs) if (tracingEnabled) reuseCounter.incrementAndGet(); return oldAbs; }