public RangeMassDecomposer getDecomposerFor(IIsotope[] alphabet) { for (RangeMassDecomposer decomposer : decomposerCache) { if (decomposer.isCompatible(alphabet)) { return decomposer; } } if (decomposerCache.size() >= maximalNumberOfCachedDecomposers) decomposerCache.remove(0); final RangeMassDecomposer decomposer = new RangeMassDecomposer(alphabet); decomposerCache.add(decomposer); return decomposer; }