<?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-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 50.
    </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.5.
    </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.10.
    </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.
    </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>
  </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>
