MemoryStateChange (@NotNull Predicate<? super MemoryStateChange> predicate, boolean startFromSelf) { for (MemoryStateChange change = startFromSelf ? this : getPrevious(); change != null; change = change.getPrevious()) { if (predicate.test(change)) { return change; } } return null; }