<?xml version="1.0"?>
<!--
     Licensed to the Apache Software Foundation (ASF) under one or more
     contributor license agreements.  See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
     the License.  You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
<document>
  <properties>
    <title>Apache Commons Collections Release Notes</title>
  </properties>
  <body>
  <release version="4.5" date="2020-MM-DD" description="Maintenance release.">
  	<action issue="COLLECTIONS-780" dev="kinow" type="fix" due-to="Arturo Bernal">
      Use assertThrows V2.
    </action>
  	<action issue="COLLECTIONS-778" dev="kinow" type="fix" due-to="Arturo Bernal">
      Use assertThrows.
    </action>
    <action issue="COLLECTIONS-771" dev="kinow" type="fix" due-to="Xin Tong">
      Fix flaky AbstractMultiValuedMapTest#testToString.
    </action>
    <action issue="COLLECTIONS-769" dev="kinow" type="fix" due-to="Xin (Cynthia) Tong">
      Fix flaky UnmodifiableMultiValuedMapTest.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump actions/setup-java from v1.4.0 to v2 #174 #177 #186 #224.
    </action>
    <action issue="COLLECTIONS-764" dev="kinow" type="fix" due-to="XenoAmess">
      Refine javadoc and fix typos.
    </action>
    <action issue="COLLECTIONS-765" dev="kinow" type="fix" due-to="Tobias Kiecker">
      Update Javadoc of ListIteratorWrapper#remove.
    </action>
    <action issue="COLLECTIONS-708" dev="kinow" type="fix" due-to="dota17">
      Add hashCode method to CollectionUtils that supports an equator parameter.
    </action>
    <action issue="COLLECTIONS-759" dev="kinow" type="fix">
      Fix checkstyle issues regarding missing newline at end of file, and CRLF vs LF.
    </action>
    <action issue="COLLECTIONS-760" dev="kinow" type="add" due-to="Isira Seneviratne">
      Add tests for MapUtils
    </action>
    <action issue="COLLECTIONS-737" dev="kinow" type="update" due-to="Prodigysov">
      Return 0 immediately if the given iterable is null in IterableUtils#size. Update tests.
    </action>
    <action issue="COLLECTIONS-697" dev="eax" type="update" due-to="Ranjan George">
      JavaDoc for FixedSizeList should warn that modifying underlying list is still allowed and is not prevented
    </action>
    <action issue="COLLECTIONS-738" dev="kinow" type="update" due-to="Pengyu Nie">
      Remove the redundant assertNull in IterableUtilsTest.find and update Javadocs.
    </action>
    <action issue="COLLECTIONS-724" dev="ggregory" type="update" due-to="Eitan Adler">
      Simplify two remove-if loops #77.
    </action>
    <action issue="COLLECTIONS-726" dev="ggregory" type="update" due-to="liuhaozzu, Gary Gregory">
      Add lambdas function to provide default values in MapUtils #81.
    </action>
    <action issue="COLLECTIONS-727" dev="ggregory" type="fix" due-to="XiangzheXu, XZ-X">
      A potential misleading comment #82.
    </action>
    <action issue="COLLECTIONS-679" dev="ggregory" type="fix" due-to="David Mollitor, Mikko Maunu">
      Using existing class in example given in Javadocs. #85.
    </action>
    <action issue="COLLECTIONS-729" dev="ggregory" type="fix" due-to="dota17">
      Add test cases to IteratorUtilsTest #86.
    </action>
    <action dev="ggregory" type="fix" due-to="dota17">
      Fix typos in release notes and Javadoc for AbstractHashedMap and AbstractHashedMapTest #88.
    </action>
    <action issue="COLLECTIONS-704" dev="ggregory" type="update" due-to="dota17">
      Update size to capacity for GrowthList #90.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Test subMap and tailMap #94.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add junit for add, remove, setCount and entrySet in the UnmodifiableMultiSetTest #95.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add two test cases in UnmodifiableQueueTest #96.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Update two test cases in AbstractMultiValuedMapTest testPutAll_map1 testPutAll_map2 #97.
    </action>
    <action dev="ggregory" type="update" due-to="dota17">
      TransformedSortedBagTest should work with TransformedSortedBag, not TransformedBag #98.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add a test case for AbstractMultiValuedMapTest testToString() #100.
    </action>
    <action dev="ggregory" type="update" due-to="dota17">
      Update some map test cases #104.
    </action>
    <action dev="ggregory" type="update" due-to="dota17">
      Add three test cases in UnmodifiableQueueTest #105.
    </action>
    <action issue="COLLECTIONS-674" dev="ggregory" type="add" due-to="dota17">
      Add CollectionUtils removeRange, removeCount #91.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add a test case AbstractMultiValuedMapTest#testMultiValuedMapIterator() #108.
    </action>
    <action dev="ggregory" type="update" due-to="dota17">
      Remove the parentheses in the error message in CircularFifoQueue #107.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add junit for getWithNull and subList in LazyListTest; #103.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add test cases to ArrayListValuedHashMapTest; #106.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add test cases in UnmodifiableMultiValuedMapTest; #102.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      [test] org.easymock:easymock 4.0.2 -> 4.1.
    </action>
    <action issue="COLLECTIONS-734" dev="ggregory" type="fix" due-to="Chen">
      Encountered an IllegalStateException while traversing with Flat3Map.entrySet(). #115.
    </action>
    <action dev="ggregory" type="update" due-to="Chen">
      Fix inconsistent @throws comments in ListOrderedSet #125.
    </action>
    <action issue="COLLECTIONS-740" dev="ggregory" type="fix" due-to="Pengyu Nie">
      Add missing @throws comment for SwitchTransformer.switchTransformer. #124.
    </action>
    <action issue="COLLECTIONS-739" dev="ggregory" type="fix" due-to="Pengyu Nie">
      Fix inconsistent @throws comments in DefaultedMap #123.
    </action>
    <action dev="ggregory" type="fix" due-to="Dominik Stadler">
      Fix links to release notes and update contents for 4.4 #127.
    </action>
    <action issue="COLLECTIONS-744" dev="ggregory" type="add" due-to="Gary Gregory">
      Add org.apache.commons.collections4.EnumerationUtils.asIterable(Enumeration).
    </action>
    <action issue="COLLECTIONS-728" dev="ggregory" type="add" due-to="Claude Warren">
      BloomFilter contribution.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      [test] Update JUnit from 4.12 to 4.13.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      [build] Update Apache commons-parent from 48 to 51.
    </action>
    <action issue="COLLECTIONS-746" dev="ggregory" type="add" due-to="Gary Gregory">
      Add org.apache.commons.collections4.properties.PropertiesFactory.EMPTY_PROPERTIES.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      [build] Update Jacoco from 0.8.4 to 0.8.6.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      [test] Update org.easymock:easymock 4.1 -> 4.2.
    </action>
    <action issue="COLLECTIONS-747" dev="ggregory" type="fix" due-to="Gary Gregory, Walter Laan">
      MultiKey.getKeys class cast exception.
    </action>
    <action issue="COLLECTIONS-748" dev="ggregory" type="update" due-to="Gary Gregory">
      Let org.apache.commons.collections4.properties.[Sorted]PropertiesFactory accept XML input.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Update tests from Apache Commons Lang 3.9 to 3.11.
    </action>
    <action dev="ggregory" type="update" due-to="Chen">
      Fixed the typo and deal the NPE with Objects.requireNonNull #118.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Update build from checkstyle.version 3.1.0 to 3.1.1.
      Update build from checkstyle.dep.version 8.29 to 8.31.
      Update build from checkstyle.dep.version 8.31 to 8.32.
      Bump checkstyle from 8.35 to 8.36 #179.
      Bump checkstyle from 8.36 to 8.36.2 #184.
      Bump checkstyle from 8.36.2 to 8.37 #192.
      Bump checkstyle from 8.37 to 8.38 #199.
      Bump checkstyle from 8.38 to 8.39 #204.
      Bump checkstyle from 8.39 to 8.40 #212.
      Bump checkstyle from 8.40 to 8.41 #218.
      Bump checkstyle from 8.41 to 8.41.1 #222.
      Bump checkstyle from 8.41.1 to 8.42 #234.
    </action>
    <action dev="ggregory" type="update" due-to="Chen, Bruno P. Kinoshita, Gary Gregory, Michael Osipov">
      Better NPE messages in CollectionUtils with Objects.requireNonNull #117.
    </action>
    <action issue="COLLECTIONS-754" type="update" dev="ggregory" due-to="John Patrick">
      Upgrade to JUnit v5.6.0 #136.
      Upgrade to JUnit v5.6.2.
    </action>
    <action issue="COLLECTIONS-753" type="update" dev="ggregory" due-to="John Patrick">
      Upgrade Hamcrest to 2.2.
    </action>
    <action issue="COLLECTIONS-759" dev="ggregory" type="update" due-to="Bruno P. Kinoshita">
      Add newline at end of file, and convert to unix (LF instead of CRLF) fixing checkstyle #147.
    </action>
    <action issue="COLLECTIONS-757" dev="ggregory" type="update" due-to="Chen">
      Update Javadoc in BidiMap classes #146.
    </action>
    <action dev="ggregory" type="update" due-to="Chen">
      Improve MapUtils with the null checks, add JUnit for it and add Javadoc for the parameter indent. #126.
    </action>
    <action dev="ggregory" type="update" due-to="dengliming">
      Remove deprecated sudo setting. #161.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Update tests from commons-io:commons-io 2.6 to 2.10.0 #180.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Update actions/checkout from v1 to v2.3.4 #166 #173 #183 #193.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Update maven-pmd-plugin from 3.12.0 to 3.14.0 #167 #196.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Update optional commons-codec from 1.14 to 1.15.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump commons.junit.version from 5.6.2 to 5.7.2 #181 #213 #236.
    </action>
    <action issue="COLLECTIONS-774" type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-antrun-plugin from 1.8 to 3.0.0 #170.
    </action>
    <action issue="COLLECTIONS-773" type="update" dev="ggregory" due-to="Martin Monperrus">
      Add an assertion to validate ensureCapacity #198.
    </action>
    <action issue="COLLECTIONS-772" type="update" dev="ggregory" due-to="Arturo Bernal, Alex Herbert, Gary Gregory, Bruno P. Kinoshita">
      Add private constructor to ArrayUtils; better Javadocs, #195.
    </action>
    <action issue="COLLECTIONS-775" type="update" dev="ggregory" due-to="Xin Tong, Bruno P. Kinoshita, Gary Gregory">
      Fix flaky CollectionUtilsTest.getFromMap() #200.
    </action>
    <action type="update" dev="ggregory" due-to="Arturo Bernal">
      Minor Improvements #203, #208.
    </action>
    <action type="update" dev="ggregory" due-to="EruDev">
      Fix typo erroring -> erring #202.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #211.
    </action>
    <action issue="COLLECTIONS-779" type="update" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
      Migrate assert to Assertions #209.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump actions/cache from v2 to v2.1.6 #214 #225 #239.
    </action>
    <action issue="COLLECTIONS-781" type="update" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
      Add and use CollectionUtils.INDEX_NOT_FOUND constant.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump commons-lang3 from 3.11 to 3.12.0 #219.
    </action>
    <action issue="COLLECTIONS-785" type="update" dev="kinow" due-to="Arturo Bernal">
      Add new variables to oac.collections4.CollectionUtils and use them in the code base.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump easymock from 4.2 to 4.3 #226.
    </action>
    <action type="fix" dev="kinow" due-to="Jin Xu">
      Fix checkstyle syntax (was scope, is now accessModifiers) via PR #235.
    </action>
    <action issue="COLLECTIONS-786" type="fix" dev="kinow" due-to="vandrewskis">
      Fix PassiveExpiringMap documentation for methods that involve accessing the entire map.
    </action>
  </release>
  <release version="4.4" date="2019-07-05" description="Maintenance release.">
    <action issue="COLLECTIONS-710" dev="ggregory" type="fix" due-to="Yu Shi, Gary Gregory">
      NullPointerExceptions in CompositeCollection, CompositeSet, and CompositeMap.
    </action>
    <action issue="COLLECTIONS-715" dev="ggregory" type="add" due-to="morningmemo, Gary Gregory">
      Implement Collection's removeIf().
    </action>
    <action issue="COLLECTIONS-718" dev="ggregory" type="update" due-to="Eitan Adler">
      Fix LRUMap exception message.
    </action>
    <action issue="COLLECTIONS-719" dev="ggregory" type="add" due-to="Gary Gregory">
      Create a PropertiesFactory and SortedPropertiesFactory.
    </action>
    <action issue="COLLECTIONS-719" dev="ggregory" type="add" due-to="Stephan Windmüller, Bruno P. Kinoshita">
      Support Transformer for LazyList #52.
    </action>
    <action issue="COLLECTIONS-723" dev="ggregory" type="add" due-to="Eitan Adler, SOC, Bruno P. Kinoshita">
      Make use of FunctionalInterface #48.
    </action>
    <action issue="COLLECTIONS-716" dev="ggregory" type="update" due-to="Sebb">
      Don't include email address in Exception messages.
    </action>
  </release>
  <release version="4.3" date="2018-12-21" description="Update from Java 7 to Java 8, bug fixes, and small changes.">
    <action issue="COLLECTIONS-691" dev="kinow" type="fix" due-to="Eitan Adler">
      Use boolean operator for boolean result.
    </action>
    <action issue="COLLECTIONS-688" dev="ggregory" type="update">
      Update platform requirement from Java 7 to 8.
    </action>
    <action issue="COLLECTIONS-689" dev="ggregory" type="update" due-to="Richard Walker">
      Link to Javadoc API broken.
    </action>
    <action issue="COLLECTIONS-692" dev="ggregory" type="update" due-to="Gary Gregory, Eitan Adler">
      Replace use of deprecated Class#newInstance() PR #49.
    </action>
    <action issue="COLLECTIONS-696" dev="ggregory" type="add" due-to="Maxim Solodovnik">
      AbstractReferenceMap made easier for subclassing; PR #51.
    </action>
    <action issue="COLLECTIONS-701" dev="ggregory" type="fix" due-to="Shin Hong, Don Jeba">
      StackOverflowError in SetUniqueList.add() when it receives itself.
    </action>
    <action issue="COLLECTIONS-703" dev="ggregory" type="fix" due-to="Tomas Tulka">
      The PassiveExpiringMap#put() method should return the previous record only if not expired.
    </action>
    <action issue="COLLECTIONS-706" dev="ggregory" type="fix" due-to="Richard Eckart de Castilho, Gary Gregory">
      Add SetUtils.unmodifiableSet(T... items) method.
    </action>
    <action issue="COLLECTIONS-709" dev="ggregory" type="fix" due-to="Robert Wertman">
      MultiSet.Entry::getCount() isn't 0 after removing the last element.
    </action>
  </release>
  <release version="4.2" date="2018-07-11" description="Update from Java 6 to Java 7, bug fixes, and small changes.">
    <action issue="COLLECTIONS-681" dev="kinow" type="add" due-to="Stephan Fuhrmann">
      Add test for MultiSetUtils
    </action>
    <action issue="COLLECTIONS-599" dev="ggregory" type="fix" due-to="Tejas Patel, Saleem Akbar, Gary Gregory">
      HashEntry array object naming data initialized with double the size during deserialization.
    </action>
    <action issue="COLLECTIONS-662" dev="chtompki" type="fix" due-to="Vamsi Kavuri">
      Unit tests MapUtilsTest and ListIteratorWrapperTest no longer fail on Java 9.
    </action>
    <action issue="COLLECTIONS-661" dev="kinow" type="fix">
      Intermittent test failures in Windows for HashSetValuedHashMap.
    </action>
    <action issue="COLLECTIONS-660" dev="kinow" type="fix">
      Uncomment test in AbstractMapTest regarding LRUMap equals.
    </action>
    <action issue="COLLECTIONS-658" dev="britter" type="add">
      Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility.
    </action>
    <action issue="COLLECTIONS-656" dev="ggregory" type="fix">
      Fix site build on Java 8.
    </action>
    <action issue="COLLECTIONS-653" dev="kinow" type="fix">
      Update Javadoc to Build on Java 1.8.
    </action>
    <action issue="COLLECTIONS-606" dev="chtompki" type="fix" due-to="Vamsi Kavuri">
      Build status, Coverage status and Maven central weren't in README.md
    </action>
    <action issue="COLLECTIONS-602" dev="kinow" type="update" due-to="John Mark">
      Improve efficiency of DefaultedMap.get.
    </action>
    <action issue="COLLECTIONS-603" dev="kinow" type="update" due-to="Artem Konovalov">
      Small improvements for generics, conditional statements, and warnings suppressions.
    </action>
    <action issue="COLLECTIONS-655" dev="ggregory" type="update">
      Update platform from Java 6 to Java 7.
    </action>
    <action issue="COLLECTIONS-594" dev="ggregory" type="fix" due-to="Javen O'Neal">
      Web site spelling error: MultiValuedMapeList.
    </action>
    <action issue="COLLECTIONS-597" dev="ggregory" type="fix" due-to="Enrique">
       Correction of Javadoc for org.apache.commons.collections4.functors.CatchAndRethrowClosure.
    </action>
    <action issue="COLLECTIONS-589" dev="ggregory" type="add" due-to="Gary Gregory">
      Add null-safe MapUtils.size(Map&lt;?, ?>) method.
    </action>
    <action issue="COLLECTIONS-586" dev="ggregory" type="add" due-to="Shailender Bathula, Gary Gregory">
      PatriciaTrie prefixMap clear throws NullPointerException.
    </action>
    <action issue="COLLECTIONS-654" dev="ggregory" type="add">
      Add class SortedProperties to sort keys.
    </action>
    <action issue="COLLECTIONS-666" dev="ggregory" type="update" due-to="BELUGA BEHR">
      org.apache.commons.collections4.ListUtils.union(List, List) should pre-allocate result list.
    </action>
    <action issue="COLLECTIONS-669" dev="ggregory" type="update" due-to="BELUGA BEHR, Gary Gregory">
      Update org.apache.commons.collections4.CollectionUtils.addAll(Collection&lt;C>, C[]) to addAll(Collection&lt;C>, C...).
    </action>
    <action issue="COLLECTIONS-668" dev="ggregory" type="add" due-to="Gary Gregory">
      Add CollectionUtils containsAny method for primitive array: org.apache.commons.collections4.CollectionUtils.containsAny(Collection&lt;?>, T...).
    </action>
    <action issue="COLLECTIONS-575" dev="ggregory" type="add" due-to="Guram Savinov, Grzegorz Rożniecki, Bruno P. Kinoshita, Gary Gregory">
      Synchronized queue wrapper in QueueUtils.
    </action>
    <action issue="COLLECTIONS-670" dev="ggregory" type="add" due-to="Gary Gregory">
      Add org.apache.commons.collections4.IteratorUtils.first(Iterator).
    </action>
    <action issue="COLLECTIONS-671" dev="ggregory" type="add" due-to="Gary Gregory">
      Add org.apache.commons.collections4.IterableUtils.first(Iterable).
    </action>
    <action issue="COLLECTIONS-678" dev="ggregory" type="fix" due-to="Oscar Luis Vera Pérez">
      The verification of unsupported iterator methods is not complete.
    </action>
    <action issue="COLLECTIONS-673" dev="ggregory" type="fix" due-to="John Mark, Stephan Fuhrmann">
      ListUtils.partition potential integer overflow.
    </action>
  </release>
  <release version="4.1" date="2015-11-28" description="This is a security and minor release.">
    <action issue="COLLECTIONS-508" dev="tn" type="add">
      Added new interfaces "MultiValuedMap", "ListValuedMap" and "SetValuedMap"
      as a replacement for "MultiMap". Decorators and implementations reside in
      the "multimap" package and a "MultiMapUtils" class has been added.
      The existing interface "MultiMap" as well as the concrete implementation
      "MultiValueMap" has been deprecated.
    </action>
    <action issue="COLLECTIONS-551" dev="tn" type="update">
      Deprecated various method in "CollectionUtils" in favor of similar
      methods in the newly introduced "IterableUtils".
    </action>
    <action issue="COLLECTIONS-580" dev="tn" type="update">
      Serialization support for unsafe classes in the functor package
      has been removed as this can be exploited for remote code execution
      attacks. Classes considered to be unsafe are: CloneTransformer,
      ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer,
      PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure.
    </action>
    <action issue="COLLECTIONS-580" dev="tn" type="fix">
      Added validation when de-serializing a "MultiValueMap#ReflectionFactory":
      only Collection classes are allowed, otherwise an UnsupportedOperationException
      will be thrown during de-serialization.
    </action>
    <action issue="COLLECTIONS-567" dev="tn" type="add">
      Added new MultiSet interface which is intended to be a replacement for
      the Bag interface. The main difference is that a MultiSet is fully compatible
      to the Collection contract.
    </action>
    <action issue="COLLECTIONS-576" dev="tn" type="fix" due-to="Stephan Roch">
      Subclasses of MultiKey did not re-calculate their hashcode after de-serialization.
    </action>
    <action issue="COLLECTIONS-572" dev="tn" type="add">
      Added set operations to "SetUtils": union, difference, intersection and disjunction.
      The operations return a view of the result that is backed by the input sets.
    </action>
    <action issue="COLLECTIONS-570" dev="tn" type="update">
      All constructors and static factory methods will now throw a "NullPointerException" if
      a required input argument is null. Previously sometimes a "IllegalArgumentException" was used.
    </action>
    <action issue="COLLECTIONS-571" dev="tn" type="update">
      Deprecated methods "synchronizedCollection(Collection)" and "unmodifiableCollection(Collection)"
      in class "CollectionUtils", the corresponding methods in "java.util.Collections" should be used instead.
    </action>
    <action issue="COLLECTIONS-566" dev="tn" type="fix">
      "IteratorUtils#collate(...)" methods did not use natural ordering when a
      null comparator was provided.
    </action>
    <action issue="COLLECTIONS-557" dev="tn" type="add" due-to="Philippe Mouawad">
      Added support to specify the initial size of a "LRUMap".
    </action>
    <action issue="COLLECTIONS-565" dev="tn" type="add">
      Added decorators for "NavigableSet" interface.
    </action>
    <action issue="COLLECTIONS-464,COLLECTIONS-442" dev="tn" type="add">
      Added new class "FluentIterable" to support a fluent API for manipulating
      Iterable instances. Additionally various supporting methods have been
      added to "IterableUtils" and "IteratorUtils".
    </action>
    <action issue="COLLECTIONS-464" dev="tn" type="add">
      Added new "ZippingIterator" and factory methods "IteratorUtils#zippingIterator(...)".
    </action>
    <action issue="COLLECTIONS-464" dev="tn" type="add">
      Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)".
    </action>
    <action issue="COLLECTIONS-556" dev="tn" type="add">
      Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet
      using reference-equality instead of object-equality.
    </action>
    <action issue="COLLECTIONS-562" dev="tn" type="update">
      Upgraded minimum java requirement to Java 6 (up from Java 5).
    </action>
    <action issue="COLLECTIONS-395" dev="tn" type="add" due-to="David Hawthorne">
      Added method "LRUMap#get(Object, boolean)" that allows to query the map
      without affecting the least recently used order.
    </action>
    <action issue="COLLECTIONS-558" dev="tn" type="fix" due-to="Felix Rabe">
      Changed return type of "ListOrderedSet#remove(int)" from Object to the generic type parameter.
    </action>
    <action issue="COLLECTIONS-555" dev="tn" type="fix" due-to="M Kim">
      Added clarification to javadoc of "TreeBag#add(Object)" wrt null arguments.
    </action>
    <action issue="COLLECTIONS-427" dev="tn" type="add" due-to="Gonçalo Marques">
      Added "toString(...)" methods to newly created "IterableUtils" and existing "IteratorUtils"
      to get a string representation of an Iterable/Iterator instance similar to "Arrays#toString(...)".
    </action>
    <action issue="COLLECTIONS-427" dev="tn" type="fix">
      Reverted performance improvement for "SetUniqueList#retainAll(Collection)"
      introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead.
    </action>
    <action issue="COLLECTIONS-426" dev="tn" type="fix">
      Reverted performance improvement for "ListOrderedSet#retainAll(Collection)"
      introduced in 4.0. Added clarifying javadoc wrt runtime complexity instead.
    </action>
    <action issue="COLLECTIONS-530" dev="tn" type="fix" due-to="Erik">
      Added a Builder for "PredicatedCollection". Elements added to the builder
      that fail the predicate will not throw an IllegalArgumentException. The builder
      supports creating predicated lists, bags, sets and queues.
    </action>
    <action issue="COLLECTIONS-545" dev="tn" type="fix" due-to="Oswaldo Olivo">
      Documented runtime complexity of "CollectionUtils#removeAll(Collection, Collection).
    </action>
    <action issue="COLLECTIONS-543" dev="tn" type="fix">
      "AbstractCollectionDecorator" doesn't forward equals and hashCode anymore.
    </action>
    <action issue="COLLECTIONS-544" dev="tn" type="fix" due-to="Oswaldo Olivo">
      Documented runtime complexity of "CollectionUtils#retainAll(Collection, Collection).
    </action>
    <action issue="COLLECTIONS-542" dev="tn" type="fix">
      "AbstractHashedMap" still inherits from "AbstractMap", contrary to what
      the class javadoc stated. The inheritance will now be removed in v5.0.
    </action>
    <action issue="COLLECTIONS-539" dev="tn" type="add" due-to="Guram Savinov">
      Changed scope of "CircularFifoQueue#isAtFullCapacity()" to public.
    </action>
    <action issue="COLLECTIONS-525" dev="tn" type="fix" due-to="Zigler Zhang">
      The map returned by "PatriciaTrie#prefixMap()" did not contain all keys
      that are prefixed by the given search key in some rare cases.
    </action>
    <action issue="COLLECTIONS-511" dev="tn" type="add" due-to="Nathan Blomquist, Brent Worden">
      Added new methods "IterableUtils#partition(...)" to partition an input collection
      into separate output collections based on evaluation of one or more predicates.
    </action>
    <action issue="COLLECTIONS-537" dev="tn" type="fix" due-to="Frank Jakop">
      Harmonized signature of factory methods for functor-related classes which take
      a collection as input with their array counterparts.
    </action>
    <action issue="COLLECTIONS-540" dev="tn" type="fix" due-to="Daniel Stewart, Issam El Atif">
      Added overloaded method "CollectionUtils#get(Enumeration, int)" and simplified
      code for "CollectionUtils#get(Object, int)".
    </action>
    <action issue="COLLECTIONS-536" dev="tn" type="fix" due-to="Tagir Valeev">
      Improved check for null input in "MapUtils#putAll(Map, Object[])".
    </action>
    <action issue="COLLECTIONS-534" dev="tn" type="fix" due-to="Oswaldo Olivo">
      Added clarifying javadoc wrt runtime complexity of "CollectionBag#retainAll".
    </action>
    <action issue="COLLECTIONS-529" dev="tn" type="add" due-to="Alexander Muthmann, Dipanjan Laha">
      Added methods "removeAll(...)" and "retainAll(...)" to "CollectionUtils" that perform
      equality checks using the provided "Equator" object instead of "Object#equals()".
    </action>
    <action issue="COLLECTIONS-531" dev="tn" type="fix" due-to="Dipanjan Laha">
      Use correct type bounds in
      "CollectionUtils#isEqualCollection(Collection, Collection, Equator)" to
      prevent a "ClassCastException" at runtime for invalid inputs.
    </action>
    <action issue="COLLECTIONS-523" dev="tn" type="fix" due-to="Thiago Andrade">
      Removed unneeded private method in "PassiveExpiringMap".
    </action>
    <action issue="COLLECTIONS-516" dev="tn" type="fix" due-to="Cyrille Artho">
      Added clarification to the javadoc of "MapUtils#toProperties(Map)" in case
      of null keys/values.
    </action>
    <action issue="COLLECTIONS-524" dev="tn" type="fix" due-to="J Goodfellow">
      "ListOrderedSet#listOrderedSet(List)" did not remove duplicates from the
      input list as advertised in the javadoc.
    </action>
    <action issue="COLLECTIONS-521" dev="tn" type="fix" due-to="Maxime Nay">
      "MultiKeyMap" was throwing a "NullPointerException" for various operations
      if two key arguments have been used and the second was "null".
    </action>
    <action issue="COLLECTIONS-522" dev="tn" type="fix" due-to="Erik">
      Updated code example for "PredicatedList".
    </action>
    <action issue="COLLECTIONS-512" dev="tn" type="fix" due-to="Cyrille Artho">
      "TransformingComparator" and "FixedOrderComparator" did not comply with
      the contract of "Object#equals".
    </action>
    <action issue="COLLECTIONS-510" dev="tn" type="fix" due-to="Hollis Waite">
      Fix compilation errors when using source level 1.8 and a recent java 8 compiler.
    </action>
    <action issue="COLLECTIONS-509" dev="tn" type="fix">
      Clarified javadoc of "CollectionBag" wrt changes from the original Bag interface.
    </action>
    <action issue="COLLECTIONS-507" dev="tn" type="fix" due-to="Gerson">
      Removed wrong type bounds for "ComparatorUtils#chainedComparator(...)".
    </action>
    <action issue="COLLECTIONS-506" dev="tn" type="fix" due-to="Anthony Communier">
      Added javadoc clarification to class "CollectionUtils" that input objects which
      override "Object#equals(Object)" must also maintain the general contract of
      "Object#hashCode()" as various utility methods take advantage of sets/maps/bags.
    </action>
    <action issue="COLLECTIONS-503" dev="tn" type="add" due-to="Josh Cain">
      Added new transformer "IfTransformer" and factory methods "TransformerUtils#ifTransformer(...)"
      which replace "TransformerUtils#switchTransformer(Predicate, Transformer, Transformer)".
    </action>
    <action issue="COLLECTIONS-471" dev="tn" type="add" due-to="Radford Tam">
      Added new decorator "BoundedIterator" and factory methods "IteratorUtils#boundedIterator(...)".
    </action>
  </release>
  <release version="4.0" date="2013-11-27" description="
This is a major release: It combines bug fixes, new features and
changes to existing features.

Most notable changes are: use of generics and other language features introduced in Java 5 (varargs, Iterable),
removed deprecated classes / methods and features which are now supported by the JDK,
replaced Buffer interface with java.util.Queue,
added concept of split maps with respective interfaces Put / Get (see also package splitmap),
added new Trie interface together with an implementation of a Patricia Trie.

Because of the base package name change, this release can be used together
with earlier versions of Commons Collections.
The minimal version of the Java platform required to compile and use
Commons Collections is Java 5.
Users are encouraged to upgrade to this version as, in addition to new
features, this release includes numerous bug fixes.
  ">
    <action issue="COLLECTIONS-502" dev="tn" type="update">
      Resolved generic parameter inconsistency for various static fields, e.g. BagUtils.EMPTY_BAG,
      TruePredicate.INSTANCE and many others. All accessible static fields use raw types so that
      they can be used directly without explicit casting. To avoid compiler warnings about unchecked
      conversion and/or rawtypes use the corresponding factory methods, e.g. BagUtils.emptyBag().
    </action>
    <action issue="COLLECTIONS-501" dev="tn" type="update">
      Renamed methods "V MultiKeyMap#remove(Object, Object, ...)" to
      "V MultiKeyMap#removeMultiKey(Object, Object, ...)" to avoid future conflicts
      with a default method of the Map interface in Java 8.
    </action>
    <action issue="COLLECTIONS-500" dev="tn" type="update">
      Renamed "V MultiMap#remove(K, V)" to "boolean MultiMap#removeMapping(K, V)"
      to avoid future conflicts with a default method of the Map interface in Java 8.
    </action>
    <action issue="COLLECTIONS-499" dev="tn" type="update">
      Refactored the test framework for Bag implementations to extend from
      "AbstractCollectionTest" by decorating the concrete Bag instance with
      a CollectionBag or CollectionSortedBag.
    </action>
    <action issue="COLLECTIONS-498" dev="tn" type="fix">
      "CollectionBag" will now also respect the contract of the decorated bag in case
      a null argument is provided to either removeAll or retainAll.
    </action>
    <action issue="COLLECTIONS-497" dev="tn" type="add">
      Added bag decorator "CollectionSortedBag" which decorates a SortedBag to make it
      comply with the Collection contract.
    </action>
    <action issue="COLLECTIONS-496" dev="tn" type="update">
      "UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
      similar as all other unmodifiable decorators.
    </action>
    <action issue="COLLECTIONS-495" dev="tn" type="fix">
      "UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already
      unmodifiable Trie. Also the return type has been changed to "Trie" to be consistent
      with other Unmodifiable decorators.
    </action>
    <action issue="COLLECTIONS-494" dev="tn" type="update" due-to="Emmanuel Bourg">
      Moved "Equator" interface to base package for consistency.
    </action>
    <action issue="COLLECTIONS-488" dev="tn" type="add" due-to="Josh Cain">
      Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
      of a collection match a given predicate.
    </action>
    <action issue="COLLECTIONS-485" dev="tn" type="fix" due-to="Hollis Waite">
      Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
      and iterators.
    </action>
    <action issue="COLLECTIONS-481" dev="tn" type="fix" due-to="Hollis Waite">
      No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
      with more than one Set as argument. Additionally use varargs parameters instead of arrays
      in CompositeSet and CompositeCollection constructor and addComposited method.
    </action>
    <action issue="COLLECTIONS-480" dev="tn" type="update" due-to="Hollis Waite">
      Narrow return type of "BidiMap#values()" to Set as the values are required to be unique.
    </action>
    <action issue="COLLECTIONS-475" dev="tn" type="fix">
      Fixed conversion of timeout parameters in "PassiveExpiringMap".
    </action>
    <action issue="COLLECTIONS-474" dev="sebb" type="fix" due-to="Ning Chen">
      Exception in "ListOrderedMap#putAll" if map contains null values.
    </action>
    <action issue="COLLECTIONS-473" dev="tn" type="update" due-to="sebb">
      Made field "collection" in class "AbstractCollectionDecorator" private and added
      setter "setCollection(Collection)" with scope protected to set the decorated collection
      during de-serialization.
    </action>
    <action issue="COLLECTIONS-472" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately
      after a difference has been found.
    </action>
    <action issue="COLLECTIONS-470" dev="tn" type="update" due-to="sebb">
      Renamed class "TransformedMap" in package "splitmap" to "TransformedSplitMap" to avoid
      name clash with similar class in package "map".
    </action>
    <action issue="COLLECTIONS-468" dev="tn" type="add">
      Added bag decorator "CollectionBag" which decorates a bag to make it comply with the
      Collection contract.
    </action>
    <action issue="COLLECTIONS-466" dev="tn" type="update">
      Replaced "Collection" with "Iterable" for method arguments where applicable.
    </action>
    <action issue="COLLECTIONS-463" dev="tn" type="add" due-to="Andy Seaborne, Claude Warren">
      Added "PushbackIterator" decorator to support pushback of elements during iteration.
    </action>
    <action issue="COLLECTIONS-462" dev="tn" type="add" due-to="Andy Seaborne, Claude Warren">
      Added "PeekingIterator" decorator to support one-element lookahead during iteration.
    </action>
    <action issue="COLLECTIONS-461" dev="tn" type="fix" due-to="Matt Benson, sebb">
      Added additional clarification to javadoc of interface "Put" wrt return type of
      "put(Object, Object)" method.
    </action>
    <action issue="COLLECTIONS-460" dev="tn" type="update">
      Changed "IteratorChain" to use internally a "Queue" instead of a "List". Iterators are
      removed from the queue once used and can be garbage collected after being exhausted.
      Additionally removed the methods "setIterator(Iterator)" and "getIterators()".
    </action>
    <action issue="COLLECTIONS-459" dev="tn" type="update" due-to="sebb">
      Removed method "setArray(Object)" in class ArrayIterator and method "setArray(Object[])"
      in class ObjectArrayIterator and made fields array, startIndex and endIndex final.
    </action>
    <action issue="COLLECTIONS-458" dev="sebb" type="remove">
      Removed unused class "AbstractUntypedCollectionDecorator&lt;E, D&gt;".
    </action>
    <action issue="COLLECTIONS-456" dev="tn" type="add">
      Added methods "ListUtils#longestCommonSubsequence(...)" to get the longest common subsequence
      of arbitrary lists or CharSequences.
    </action>
    <action issue="COLLECTIONS-455" dev="sebb" type="update">
      Changed scope of fields to private where appropriate.
    </action>
    <action issue="COLLECTIONS-454" dev="tn" type="update">
      An iterator over a "Flat3Map#entrySet()" will now return
      independent Map.Entry objects that will not change anymore when
      the iterator progresses.
    </action>
    <action issue="COLLECTIONS-453" dev="tn" type="update">
      Several closure and transformer implementations in the functors package
      will now copy an array as input to their constructor (e.g. ChainedClosure).
    </action>
    <action issue="COLLECTIONS-452" dev="tn" type="update">
      Change base package to org.apache.commons.collections4.
    </action>
    <action issue="COLLECTIONS-451" dev="tn" type="update">
      The constructors for all Utils classes are now private to prevent instantiation.
    </action>
    <action issue="COLLECTIONS-450" dev="tn" type="add" due-to="J. Moldawski">
      Added methods "forAllButLastDo(Collection, Closure)" and "forAllButLastDo(Iterator, Closure)"
      to class "CollectionUtils".
    </action>
    <action issue="COLLECTIONS-447" dev="tn" type="fix" due-to="Jeffrey Barnes">
      Tree traversal with a TreeListIterator will not be affected anymore by
      the removal of an element directly after a call to previous().
    </action>
    <action issue="COLLECTIONS-446" dev="tn" type="add" due-to="Matt Lachman">
      Added method "CollectionUtils#isEqualCollection(Collection, Collection, Equator)".
    </action>
    <action issue="COLLECTIONS-445" dev="tn" type="fix">
      Adapt and/or ignore several unit tests when run on a IBM J9 VM (specification version 1.6.0)
      due to a faulty "java.util.TreeMap" implementation.
    </action>
    <action issue="COLLECTIONS-444" dev="tn" type="fix" due-to="Thomas Vahrst, John Vasileff">
      SetUniqueList.set(int, E) now works correctly if the object to be inserted
      is already placed at the given position.
    </action>
    <action issue="COLLECTIONS-441" dev="tn" type="fix" due-to="Thomas Vahrst">
      MultiKeyMap.clone() now correctly calls super.clone().
    </action>
    <action issue="COLLECTIONS-436" dev="tn" type="add" due-to="Arman Sharif">
      Added "emptyIfNull" methods to classes "CollectionUtils", "ListUtils", "SetUtils"
      and "MapUtils".
    </action>
    <action issue="COLLECTIONS-433" dev="tn" type="fix" due-to="Jeffrey Barnes">
      Improve performance of "TreeList#addAll" and "TreeList(Collection)" by converting
      the input collection into an AVL tree and efficiently merge it into the existing tree.
    </action>
    <action issue="COLLECTIONS-432" dev="tn" type="update">
      Replaced "Buffer" interface with "java.util.Queue". Kept "CircularFifoQueue"
      as well as "Predicated", "Transformed" and "Unmodifiable" decorators.
    </action>
    <action issue="COLLECTIONS-429,COLLECTIONS-434" dev="tn" type="add" due-to="Adrian Nistor, Mert Guldur">
      Added method "CollectionUtils#containsAll(Collection, Collection)" with guaranteed
      runtime complexity of O(n + m) and space complexity of O(n). This method may yield much
      better performance than "Collection#containsAll(Collection)" depending on the use-case and
      type of collection used.
    </action>
    <action issue="COLLECTIONS-427" dev="brentworden" type="fix" due-to="Mert Guldur">
      Fixed performance issue in "SetUniqueList#retainAll" method for large collections.
    </action>
    <action issue="COLLECTIONS-426" dev="brentworden" type="fix" due-to="Adrian Nistor">
      Fixed performance issue in "ListOrderedSet#retainAll" method for large collections.
    </action>
    <action issue="COLLECTIONS-425" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "ListOrderedMap#remove(Object)" method.
    </action>
    <action issue="COLLECTIONS-424" dev="tn" type="update" due-to="Michael Pradel">
      "CompositeSet" does not inherit from "CompositeCollection" anymore. The inner class
      "SetMutator" has been updated accordingly.
    </action>
    <action issue="COLLECTIONS-422" dev="tn" type="add" due-to="Benoit Corne">
      Added method "CollectionUtils#permutations(Collection)" and class "PermutationIterator"
      to generate unordered permutations of a collection.
    </action>
    <action issue="COLLECTIONS-421" dev="tn" type="fix" due-to="Benedikt Ritter">
      Update javadoc for "ListUtils#lazyList()" and "ListUtils#fixedSizeList()".
    </action>
    <action issue="COLLECTIONS-419" dev="tn" type="fix" due-to="Adrian Nistor">
      Added clarifying javadoc wrt runtime complexity of "AbstractDualBidiMap#retainAll".
    </action>
    <action issue="COLLECTIONS-417" dev="tn" type="fix" due-to="Adrian Nistor">
      Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#retainAll".
    </action>
    <action issue="COLLECTIONS-415" dev="tn" type="fix" due-to="Adrian Nistor">
      Added clarifying javadoc wrt runtime complexity of "AbstractLinkedList#removeAll".
    </action>
    <action issue="COLLECTIONS-414" dev="tn" type="fix">
      Fixed several compilation issues with older Java 1.6 compilers.
    </action>
    <action issue="COLLECTIONS-413" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "removeAll()" method for sets returned by "DualHashBidiMap#entrySet()".
    </action>
    <action issue="COLLECTIONS-412" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "CollectionUtils#subtract" methods.
    </action>
    <action issue="COLLECTIONS-411" dev="tn" type="fix" due-to="Adrian Nistor">
      Fixed possible "IndexOutOfBoundsException" in "ListOrderedMap#putAll".
    </action>
    <action issue="COLLECTIONS-410" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "SetUniqueList#addAll" method.
    </action>
    <action issue="COLLECTIONS-409" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "ListOrderedSet#addAll" method.
    </action>
    <action issue="COLLECTIONS-408" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "SetUniqueList#removeAll".
    </action>
    <action issue="COLLECTIONS-407" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "ListOrderedSet#remove(Object)" in case the object is
      not contained in the Set.
    </action>
    <action issue="COLLECTIONS-406" dev="tn" type="fix" due-to="Adrian Nistor">
      Improved performance of "ListUtils#subtract" method.
    </action>
    <action issue="COLLECTIONS-405" dev="brentworden" type="add" due-to="Adam Dyga">
      Added "ListUtils#select" and "ListUtils#selectRejected" methods.
    </action>
    <action issue="COLLECTIONS-404" dev="luc" type="add" due-to="Jordane Sarda">
      Added an implementation of Eugene Myers difference algorithm in package
      o.a.c.c.sequence.
    </action>
    <action issue="COLLECTIONS-400" dev="tn" type="fix" due-to="Shin Hwei Tan">
      Added missing null check in "CollectionUtils#addIgnoreNull(Collection, Object)".
    </action>
    <action issue="COLLECTIONS-399" dev="tn" type="add" due-to="Sebb">
      Added new method "get(int)" to "CircularFifoQueue".
    </action>
    <action issue="COLLECTIONS-396" dev="tn" type="add" due-to="Jeff Rodriguez">
      Added "LazyIteratorChain" iterator.
    </action>
    <action issue="COLLECTIONS-393" dev="tn" type="add" due-to="Chris Shayan">
      Added "ListUtils#partition" method to split a List into consecutive sublists.
    </action>
    <action issue="COLLECTIONS-391" dev="tn" type="fix" due-to="Shin Hwei Tan">
      Fixed javadoc for "MapUtils#toProperties(Map)".
    </action>
    <action issue="COLLECTIONS-389" dev="tn" type="fix" due-to="Shin Hwei Tan">
      Clarified javadoc for "TransformerUtils#mapTransformer" for null input.
    </action>
    <action issue="COLLECTIONS-388" dev="tn" type="fix" due-to="Shin Hwei Tan">
      Clarified javadoc for "FactoryUtils#prototypeFactory" for null input.
    </action>
    <action issue="COLLECTIONS-384" dev="ggregory" type="fix" due-to="Shin Hwei Tan">
      Fixed inconsistent javadoc for "MapUtils#synchronizedMap(Map)".
    </action>
    <action issue="COLLECTIONS-383" dev="tn" type="add" due-to="Adrian Cumiskey">
      Added "CollectionUtils#forAllDo" implementation which takes an "Iterator" as input.
    </action>
    <action issue="COLLECTIONS-382" dev="tn" type="update" due-to="Olivier Lamy">
      Change maven coordinates to "org.apache.commons.commons-collections4".
    </action>
    <action issue="COLLECTIONS-381" dev="sebb" type="update" due-to="Olivier Lamy">
      Move the project structure to a standard maven layout.
    </action>
    <action issue="COLLECTIONS-380" dev="tn" type="fix" due-to="Dave Brosius">
      Fixed infinite loop when calling "UnmodifiableBoundedCollection#unmodifiableBoundedCollection()".
    </action>
    <action issue="COLLECTIONS-379" dev="tn" type="fix" due-to="Shin Hwei Tan">
      Fixed javadoc for several methods wrt expected NullPointerExceptions.
    </action>
    <action issue="COLLECTIONS-375" dev="tn" type="add" due-to="Ivan Hristov">
      Added method "ListUtils#defaultIfNull(List, List)".
    </action>
    <action issue="COLLECTIONS-372" dev="tn" type="update">
      TransformingComparator now supports different types for its input/output values.
    </action>
    <action issue="COLLECTIONS-364" dev="sebb" type="fix">
      "DualTreeBidiMap" now uses the correct comparator for the reverse map during de-serialization.
    </action>
    <action issue="COLLECTIONS-363" dev="sebb" type="fix">
      "TransformedMap" in the package "splitmap" can now be serialized.
    </action>
    <action issue="COLLECTIONS-362" dev="brentworden" type="update" due-to="Jean-Noel Rouvignac">
      "CollectionUtils#filter(Iterable, Predicate)" will now return whether the collection
      has been modified.
    </action>
    <action issue="COLLECTIONS-361" dev="tn" type="add" due-to="Jean-Noel Rouvignac">
      Add method "CollectionUtils#filterInverse(Iterable, Predicate)".
    </action>
    <action issue="COLLECTIONS-360" dev="jochen" type="fix" due-to="Sai Zhang">
      "FilterListIterator#hasNext" does not throw a NullPointerException anymore
      to comply to the Java iterator specification.
    </action>
    <action issue="COLLECTIONS-359" dev="bayard" type="fix" due-to="Mark Shead">
      "ListUtils#intersection(List, List)" will now also work correctly if there
      are duplicate elements in the provided lists.
    </action>
    <action issue="COLLECTIONS-352" dev="bayard" type="fix" due-to="Adam Gent">
      "AbstractCollectionDecorator" will now use internally "decorated()" to access
      the decorated collection.
    </action>
    <action issue="COLLECTIONS-351" dev="bayard" type="remove" due-to="Henri Yandell">
      Removed features which are now supported by the JDK.
    </action>
    <action issue="COLLECTIONS-350" dev="bayard" type="fix" due-to="Michael Akerman">
      Removed debug output in "MapUtils#getNumber(Map)".
    </action>
    <action issue="COLLECTIONS-348" dev="brentworden" type="fix" due-to="Paul Benedict">
      Fixed javadoc for all "transformedXXX(XXX)" methods in the respective Utils classes
      to clarify that existing objects in the list are not transformed.
    </action>
    <action issue="COLLECTIONS-343" dev="mbenson" type="fix" due-to="Goran Hacek">
      Singleton classes in package "functors" are now correctly de-serialized.
    </action>
    <action issue="COLLECTIONS-341" dev="mbenson" type="update" due-to="Goran Hacek">
      "NOPClosure" is now a final class.
    </action>
    <action issue="COLLECTIONS-340" dev="mbenson" type="fix" due-to="Goran Hacek">
      Removed broken methods "equals(Object)" and "hashCode()" in class "NOPClosure".
    </action>
    <action issue="COLLECTIONS-336" dev="bayard" type="fix" due-to="sebb">
      Simplified exceptions as the cause is available from the parent.
    </action>
    <action issue="COLLECTIONS-335" dev="jochen" type="fix" due-to="sebb">
      Fixed cache assignment for "TreeBidiMap#entrySet".
    </action>
    <action issue="COLLECTIONS-334" dev="jochen" type="fix" due-to="sebb">
      Synchronized access to lock in "StaticBucketMap#size()".
    </action>
    <action issue="COLLECTIONS-332" dev="jochen" type="fix" due-to="Tom Parker">
      Added clarification to javadoc of "ListOrderedMap" that "IdentityMap" and
      "CaseInsensitiveMap" are not supported.
    </action>
    <action issue="COLLECTIONS-331" dev="jochen" type="fix" due-to="Michael Krkoska">
      Improve javadoc of "CollatingIterator" wrt the used "Comparator" and throw a
      NullPointerException in "CollatingIterator#least" if no comparator is set.
    </action>
    <action issue="COLLECTIONS-330" dev="mbenson" type="fix" due-to="Joerg Schaible">
      "LRUMap#keySet()#remove(Object)" will not throw a "ConcurrentModificationException" anymore.
    </action>
    <action issue="COLLECTIONS-328" dev="bayard" type="fix" due-to="Thomas Rogan, Jilles van Gurp">
      Improved performance of "ListUtils#intersection(List, List)".
    </action>
    <action issue="COLLECTIONS-327" dev="brentworden" type="add" due-to="sebb">
      Added serialVersionUID fields for "CompositeCollection", "CompositeSet",
      "EmptyMapMutator", "EmptySetMutator".
    </action>
    <action issue="COLLECTIONS-324" dev="tn" type="update" due-to="sebb">
      Fields transformer and decorated in class "TransformingComparator" are now final.
    </action>
    <action issue="COLLECTIONS-323" dev="jochen" type="fix" due-to="Maarten Brak">
      Changed behavior of "CaseInsensitiveMap" constructor to be compliant with "HashMap"
      in case the initial capacity is set to zero.
    </action>
    <action issue="COLLECTIONS-322" dev="tn" type="add" due-to="Thomas Vahrst">
      Added NodeListIterator and convenience methods in IteratorUtils to iterate over
      a org.w3c.dom.NodeList.
    </action>
    <action issue="COLLECTIONS-320" dev="bayard" type="fix" due-to="sebb">
      Improved performance of "StaticBucketMap#putAll(Map)" by iterating over the entry set.
    </action>
    <action issue="COLLECTIONS-319" dev="bayard" type="fix" due-to="sebb">
      Avoid redundant null check in "IteratorUtils#getIterator(Object)".
    </action>
    <action issue="COLLECTIONS-317" dev="bayard" type="fix" due-to="sebb">
      Use a private method to populate the object in "AbstractHashedMap(Map)".
    </action>
    <action issue="COLLECTIONS-316" dev="bayard" type="fix" due-to="ori">
      Fixed javadoc of "LRUMap" wrt to the maxSize parameter of the constructor.
    </action>
    <action issue="COLLECTIONS-313" dev="brentworden" type="add" due-to="David J. M. Karlsen">
      Added new abstract class "CatchAndRethrowClosure" that re-throws any checked exception
      as unchecked "FunctorException".
    </action>
    <action issue="COLLECTIONS-312" dev="tn" type="fix" due-to="Peter Lawrey, Gary Gregory">
      Use of final keyword where applicable, minor performance improvements by properly
      initializing the capacity of newly created collections when known in advance.
    </action>
    <action issue="COLLECTIONS-307" dev="tn" type="update" due-to="Christian Semrau, Thomas Vahrst">
      "SetUniqueList#subList()" will now return an unmodifiable list as changes to it
      may invalidate the parent list.
    </action>
    <action issue="COLLECTIONS-307" dev="bayard" type="fix" due-to="Christian Semrau">
      "SetUniqueList#subList()#contains(Object)" will now correctly check the subList
      rather than the parent list.
    </action>
    <action issue="COLLECTIONS-306" dev="brentworden" type="add" due-to="Chris Shayan">
      Added method "CollectionUtils#subtract(Iterable, Iterable, Predicate)".
    </action>
    <action issue="COLLECTIONS-304" dev="bayard" type="fix" due-to="Rafał Figas,Bjorn Townsend">
      "SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint.
    </action>
    <action issue="COLLECTIONS-303" dev="bayard" type="fix" due-to="Emmanuel Bourg">
      Improved javadoc for "Unmodifiable*" classes wrt behavior when the users tries
      to modify the collection.
    </action>
    <action issue="COLLECTIONS-298" dev="bayard" type="update" due-to="Benjamin Bentmann">
      Calling "CollectionUtils#sizeIsEmpty(null)" will now return true.
    </action>
    <action issue="COLLECTIONS-296" dev="tn" type="add" due-to="Julius Davies">
      Added methods "CollectionUtils#collate(...)" to merge two sorted Collections
      into a sorted List using the standard O(n) merge algorithm.
    </action>
    <action issue="COLLECTIONS-294" dev="bayard" type="fix" due-to="Benjamin Bentmann">
      "CaseInsensitiveMap" will now convert input strings to lower-case in a
      locale-independant manner.
    </action>
    <action issue="COLLECTIONS-293" dev="tn" type="add" due-to="Stephen Kestle">
      Added support for using custom "Equator" objects in "EqualPredicate".
    </action>
    <action issue="COLLECTIONS-289" dev="bayard" type="add" due-to="Fredrik Kjellberg">
      Added method "CollatingIterator#getIteratorIndex()".
    </action>
    <action issue="COLLECTIONS-256,COLLECTIONS-288" dev="bayard" type="fix" due-to="Paul Benedict">
      Fixed javadoc for "ListUtils#transformedList(List)" to clarify that existing objects
      in the list are not transformed.
    </action>
    <action issue="COLLECTIONS-286" dev="mbenson" type="add" due-to="Geoffrey De Smet">
      Added method "CollectionUtils#extractSingleton(Collection)".
    </action>
    <action issue="COLLECTIONS-285" dev="tn" type="add" due-to="Christian Gruenberg">
      Added serialization support for "TreeBidiMap".
    </action>
    <action issue="COLLECTIONS-280" dev="bayard" type="update" due-to="Chris Lewis">
      The predicate that rejected an object to be added to a "PredicatedCollection"
      is now contained in the respective exception message.
    </action>
    <action issue="COLLECTIONS-275" dev="tn" type="add" due-to="Stephen Kestle">
      Added "IndexedCollection" collection decorator which provides a map-like
      view on an existing collection.
    </action>
    <action issue="COLLECTIONS-272" dev="tn" type="add" due-to="Chaitanya Mutyala">
      Added serialization support for "FixedOrderComparator" and "TransformingComparator".
    </action>
    <action issue="COLLECTIONS-266" dev="bayard" type="fix" due-to="Joerg Schaible">
      "MultiKey" will now be correctly serialized/de-serialized.
    </action>
    <action issue="COLLECTIONS-265" dev="bayard" type="update" due-to="David Saff">
      "TreeBag" will now only accept "Comparable" objects as input when used with natural ordering.
    </action>
    <action issue="COLLECTIONS-263" dev="tn" type="add" due-to="John Hunsley">
      Added methods "MapUtils#populateMap(MultiMap, ...)" to support also "MultiMap" instances
      as input.
    </action>
    <action issue="COLLECTIONS-262" dev="bayard" type="fix" due-to="Lisen Mu">
      Fixed javadoc for methods "firstKey()" and "lastKey()" in class "AbstractLinkedMap".
    </action>
    <action issue="COLLECTIONS-261" dev="bayard" type="fix" due-to="ori">
      "Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
      if the size of the map is less or equal 3.
    </action>
    <action issue="COLLECTIONS-260" dev="mbenson" type="add" due-to="Stephen Kestle">
      Added constructor "TransformingComparator(Transformer)".
    </action>
    <action issue="COLLECTIONS-258" dev="tn" type="add" due-to="Nathan Blomquist">
      Added "DualLinkedHashBidiMap" bidi map implementation.
    </action>
    <action issue="COLLECTIONS-255" dev="mbenson" type="fix" due-to="Henri Yandell">
      Removed unused variables in "TreeBidiMap".
    </action>
    <action issue="COLLECTIONS-251,COLLECTIONS-321" dev="mbenson" type="update" due-to="Stephen Kestle">
      The static factory methods have been renamed from "getInstance()" to a camel-case
      version of the class name, e.g. "truePredicate()" for class "TruePredicate".
    </action>
    <action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly">
      "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
      provided index.
    </action>
    <action issue="COLLECTIONS-242" dev="skestle" type="add">
      Added "Equator" interface.
    </action>
    <action issue="COLLECTIONS-241" dev="brentworden" type="add" due-to="Elifarley Callado Coelho">
      Added "PassiveExpiringMap" map decorator.
    </action>
    <action issue="COLLECTIONS-240" dev="bayard" type="update" due-to="Wouter de Vaal">
      "MultiValueMap" is now serializable.
    </action>
    <action issue="COLLECTIONS-237" dev="tn" type="add" due-to="Nils Kaiser, Alan Mehlo">
      Added method "MultiValueMap#iterator()" to return a flattened version of
      "entrySet().iterator()". Clarified javadoc for "entrySet()" that the returned Entry
      objects are unflattened, i.e. the Entry object for a given key contains all values
      mapped to this key.
    </action>
    <action issue="COLLECTIONS-235" dev="bayard" type="add" due-to="Nathan Egge">
      Added method "ListUtils#indexOf(List, Predicate)".
    </action>
    <action issue="COLLECTIONS-232" dev="bayard" type="fix" due-to="Mark Hindess">
      Fixed several unit tests which were using parameters to "assertEquals(...)" in wrong order.
    </action>
    <action issue="COLLECTIONS-231" dev="tn" type="update" due-to="Torsten Curdt">
      Return concrete class in static factory methods instead of base class interface
      (except for Unmodifiable decorators).
    </action>
    <action issue="COLLECTIONS-230,COLLECTIONS-297,COLLECTIONS-318" dev="bayard" type="update" due-to="Stepan Koltsov,sebb">
      "CollectionUtils#size(Collection)" now returns 0 when called with null as input.
    </action>
    <action issue="COLLECTIONS-229" dev="scolebourne" type="remove">
      Removed deprecated classes and methods.
    </action>
    <action issue="COLLECTIONS-228" dev="scolebourne" type="fix">
      "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
      now correctly return if the map has changed by this operation.
    </action>
    <action issue="COLLECTIONS-226" dev="bayard" type="add" due-to="Vasily Ivanov">
      Added method "ListOrderedMap#putAll(int, Map)".
    </action>
    <action issue="COLLECTIONS-225" dev="tn" type="add" due-to="Sam Berlin, Roger Kapsi">
      Added new "Trie" interface with a first concrete implementation "PatriciaTrie"
      together with decorators "Unmodifiable" and "Synchronized".
    </action>
    <action issue="COLLECTIONS-223" dev="bayard" type="update" due-to="Vasily Ivanov">
      "CollectionUtils#addAll(...)" methods now return if the collection has been changed
      by this operation.
    </action>
    <action issue="COLLECTIONS-221" dev="bayard" type="update" due-to="Pal Denes">
      "CompositeCollection", "CompositeMap" and "CompositeSet" are now serializable.
    </action>
    <action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese">
      "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll".
    </action>
    <action issue="COLLECTIONS-218" dev="skestle" type="update">
      The "CollectionUtils#select(Collection, Predicate, Collection)" method will now
      return the output collection.
    </action>
    <action issue="COLLECTIONS-217" dev="scolebourne" type="fix" due-to="Matt Bishop">
      Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now
      correctly set the value for the current entry.
    </action>
    <action issue="COLLECTIONS-216" dev="scolebourne" type="fix" due-to="Hendrik Maryns">
      "MultiKey#toString()" will now use "Arrays#toString(List)".
    </action>
    <action issue="COLLECTIONS-213" dev="brentworden" type="add" due-to="Dusan Chromy">
      Added support for resettable iterators in "IteratorIterable".
    </action>
    <action issue="COLLECTIONS-194" dev="bayard" type="add" due-to="Dave Meikle">
      Added methods "MapUtils#populateMap(Map, Iterable, Transformer, ...)".
    </action>
    <action issue="COLLECTIONS-182" dev="mbenson" type="update" due-to="Jim Cakalic">
      "CollectionUtils#forAllDo(Collection, Closure)" now returns the provided closure.
    </action>
    <action issue="COLLECTIONS-110,COLLECTIONS-243,COLLECTIONS-245,COLLECTIONS-247,
                   COLLECTIONS-253,COLLECTIONS-273,COLLECTIONS-282" dev="multiple" type="update">
      Make generic versions of all classes in collections.
    </action>
    <action issue="COLLECTIONS-8" dev="brentworden" type="add" due-to="Rune Peter Bjørnstad">
      Added class "ComparatorPredicate".
    </action>
  </release>
  <release version="3.2.2" date="2015-11-15" description="This is a security and bugfix release.">
    <action issue="COLLECTIONS-580" dev="tn" type="update">
      Serialization support for unsafe classes in the functor package is disabled
      by default as this can be exploited for remote code execution attacks.
      To re-enable the feature the system property "org.apache.commons.collections.enableUnsafeSerialization"
      needs to be set to "true".
      Classes considered to be unsafe are: CloneTransformer, ForClosure, InstantiateFactory,
      InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory,
      PrototypeSerializationFactory, WhileClosure.
    </action>
    <action issue="COLLECTIONS-538" dev="tn" type="fix" due-to="Trejkaz">
      "ExtendedProperties" will now use a privileged action to access the
      "file.separator" system property. In case the class does not have
      permission to read system properties, the "File#separator" field will
      be used instead.
    </action>
    <action issue="COLLECTIONS-447" dev="tn" type="fix" due-to="Jeffrey Barnes">
      Tree traversal with a TreeListIterator will not be affected anymore by
      the removal of an element directly after a call to previous().
    </action>
    <action issue="COLLECTIONS-444" dev="tn" type="fix" due-to="Thomas Vahrst, John Vasileff">
      SetUniqueList.set(int, Object) now works correctly if the object to be inserted
      is already placed at the given position.
    </action>
    <action issue="COLLECTIONS-350" dev="bayard" type="fix" due-to="Michael Akerman">
      Removed debug output in "MapUtils#getNumber(Map)".
    </action>
    <action issue="COLLECTIONS-335" dev="jochen" type="fix" due-to="sebb">
      Fixed cache assignment for "TreeBidiMap#entrySet".
    </action>
    <action issue="COLLECTIONS-334" dev="jochen" type="fix" due-to="sebb">
      Synchronized access to lock in "StaticBucketMap#size()".
    </action>
    <action issue="COLLECTIONS-307" dev="bayard" type="fix" due-to="Christian Semrau">
      "SetUniqueList#subList()#contains(Object)" will now correctly check the subList
      rather than the parent list.
    </action>
    <action issue="COLLECTIONS-304" dev="bayard" type="fix" due-to="Rafał Figas,Bjorn Townsend">
      "SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint.
    </action>
    <action issue="COLLECTIONS-294" dev="bayard" type="fix" due-to="Benjamin Bentmann">
      "CaseInsensitiveMap" will now convert input strings to lower-case in a
      locale-independent manner.
    </action>
    <action issue="COLLECTIONS-266" dev="bayard" type="fix" due-to="Joerg Schaible">
      "MultiKey" will now be correctly serialized/de-serialized.
    </action>
    <action issue="COLLECTIONS-261" dev="bayard" type="fix" due-to="ori">
      "Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
      if the size of the map is less or equal 3.
    </action>
    <action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly">
      "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
      provided index.
    </action>
    <action issue="COLLECTIONS-228" dev="scolebourne" type="fix">
      "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
      now correctly return if the map has changed by this operation.
    </action>
    <action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese">
      "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll".
    </action>
    <action issue="COLLECTIONS-217" dev="scolebourne" type="fix" due-to="Matt Bishop">
      Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now
      correctly set the value for the current entry.
    </action>
  </release>
  </body>
</document>
