package joist.codegen; import java.util.ArrayList; import java.util.List; /** * Keeps track of what values have been checked via {@code get} calls. * * Primarily used to detect out-of-date config settings. */ public class MarkedList<T> extends ArrayList<T> { private static final long serialVersionUID = 1L; private final List<T> checked = new ArrayList<T>(); @Override @SuppressWarnings("unchecked") public boolean contains(Object object) { this.checked.add((T) object); return super.contains(object); } public List<T> getStaleValues() { List<T> copy = new ArrayList<T>(this); copy.removeAll(this.checked); return copy; } }