<?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 xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Collections Release Notes</title>
  </properties>
  <body>
  <release version="4.5" date="2020-MM-DD" description="Maintenance release.">
    <!-- FIX -->
    <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 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-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-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 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>
    <action type="fix" dev="ggregory" due-to="Michael Berry">
      SortedProperties should sort entrySet() as well as keys() #256.
    </action>
    <action issue="COLLECTIONS-796" type="fix" dev="kinow" due-to="Clemens Kurz">
      SetUniqueList.createSetBasedOnList doesn't add list elements to return value.
    </action>
    <action issue="COLLECTIONS-799" type="fix" dev="kinow" due-to="Stefano Cordio">
      UnmodifiableNavigableSet can be modified by pollFirst() and pollLast().
    </action>
    <action type="fix" dev="ggregory" due-to="Arturo Bernal">
      Use Java 8 and method reference. #274.
    </action>
    <action issue="COLLECTIONS-788" type="fix" dev="ggregory" due-to="Arturo Bernal">
      Use Java 8 features #228.
    </action>
    <action issue="COLLECTIONS-807" type="fix" dev="ggregory" due-to="Pradeesh Kumar, samabcde">
      Upgraded org.junit.Test to org.junit.jupiter.api.Test #295, #304.
    </action>
    <action issue="COLLECTIONS-802" type="fix" dev="kinow" due-to="samabcde, Ben Manes">
      ReferenceMap iterator remove violates contract #300.
    </action>
    <action issue="COLLECTIONS-812" type="fix" dev="kinow" due-to="Ng Tsz Sum">
      Fix flaky EmptyPropertiesTest#testSave.
    </action>
    <action type="fix" dev="ggregory" due-to="Steve Bosman">
      Use java.lang.Objects#equals; eliminate a couple of nulls #307.
    </action>
    <action issue="COLLECTIONS-814" type="fix" dev="kinow" due-to="angusdev">
      CollectionUtils.removeAll() not throwing NPE #340.
    </action>
    <action type="fix" dev="ggregory" due-to="Marc Wrobel">
      Fix minor typos #323
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      AbstractReferenceMap.SoftRef implements hashCode() but not equals().
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      AbstractReferenceMap.WeakRef implements hashCode() but not equals().
    </action>
    <action type="fix" dev="ggregory" due-to="Arturo Bernal">
      Use Java style array decelerations #362.
    </action>
    <action issue="COLLECTIONS-806" type="fix" dev="ggregory" due-to="Piyush Sagar">
      Remove use of JUnit4 junit.framework.Test class #371.
    </action>
    <action issue="COLLECTIONS-839" type="fix" dev="ggregory" due-to="Sam Ng, Gary Gregory, Bruno P. Kinoshita">
      Migrate Map tests to JUnit 5 assertions #391.
    </action>
    <!-- ADD -->
    <action issue="COLLECTIONS-760" dev="kinow" type="add" due-to="Isira Seneviratne">
      Add tests for MapUtils.
    </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="add" due-to="dota17">
      Add a test case for AbstractMultiValuedMapTest testToString() #100.
    </action>
    <action dev="ggregory" type="add" due-to="dota17">
      Add a test case AbstractMultiValuedMapTest#testMultiValuedMapIterator() #108.
    </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 issue="COLLECTIONS-674" dev="ggregory" type="add" due-to="dota17">
      Add CollectionUtils removeRange, removeCount #91.
    </action>
    <action dev="ggregory" type="add" due-to="Gary Gregory">
      Add ListUtils.getFirst() and getLast().
    </action>
    <action dev="ggregory" type="add" due-to="Gary Gregory">
      Add singleton ObjectToStringComparator.INSTANCE.
    </action>
    <action dev="ggregory" type="add">
      Add github/codeql-action.
    </action>
    <action issue="COLLECTIONS-811" dev="kinow" type="add" due-to="Ben Manes">
      Integrate Guava testlib tests.
    </action>
    <!-- UPDATE -->
    <action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
      Bump actions/cache from 2 to 3.0.10 #214 #225 #239 #266 #294, #342, #345.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
      Bump actions/setup-java from 1.4.0 to 3.5.1 #174 #177 #186 #224 #298.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump actions/checkout from 1 to 3.1.0 #166, #173, #183, #193, #262, #264, #285, #346.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump codecov/codecov-action from 2 to 3 #297.
    </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-704" dev="ggregory" type="update" due-to="dota17">
      Update size to capacity for GrowthList #90.
    </action>
    <action dev="ggregory" type="update" due-to="dota17">
      TransformedSortedBagTest should work with TransformedSortedBag, not TransformedBag #98.
    </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 dev="ggregory" type="update" due-to="dota17">
      Remove the parentheses in the error message in CircularFifoQueue #107.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
      [test] Bump org.easymock:easymock from 4.0.2 to 5.1.0 #352, #355, #375.
    </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-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, Dependabot">
      [build] Update Apache commons-parent from 48 to 54, #339.
    </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">
      Bump Jacoco from 0.8.4 to 0.8.8.
    </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">
      Bump 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">
      Bump maven-checkstyle-plugin 3.1.0 to 3.2.1 #379.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump checkstyle 8.29 9.3 #179, #184, #192, #199, #204, #212, #218, #222, #234, #240, #243, #245, #246, #248, #257, #263, #270, #271, #277.
    </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.2 #136.
    </action>
    <action issue="COLLECTIONS-777" type="update" dev="ggregory" due-to="John Patrick, Gary Gregory, Dependabot">
      Fully migrate JUnit 4.12 to 5.9.1 #324, #338.
    </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">
      Bump tests from commons-io:commons-io 2.6 to 2.12.0 #180.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump maven-pmd-plugin from 3.12.0 to 3.19.0 #167, #196, #253, #311, #334.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump 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.8.2 #181 #213 #236 #252 #254 #268.
    </action>
    <action issue="COLLECTIONS-774" type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-antrun-plugin from 1.8 to 3.1.0 #170, #303.
    </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 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 issue="COLLECTIONS-793" type="update" dev="kinow" due-to="Arturo Bernal">
      Simplify Assertion.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #286.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
      Bump commons-parent from 52 to 58 #299, #368, #373, #393.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot">
      Bump japicmp from 0.15.4 to 0.16.0.
    </action>
    <action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
      Bump pmd from 6.46.0 to 6.52.0 #318, #327, #333, #347.
    </action>
    <action type="update" dev="aherbert" due-to="Partha Protim Paul">
      Correct test of Collection toArray(Object[]) vs toArray() to optionally ignore array order.
      Ordering is not specified for some collections such as Bags.
    </action>
    <action issue="COLLECTIONS-835" type="update" dev="kinow" due-to="Marc Wrobel">
      Fix links in javadoc and documentations #325.
    </action>
    <action issue="COLLECTIONS-836" type="update" dev="aherbert" due-to="Anant Dahiya">
      Correct test of BidiMap to optionally ignore testing the key set matches the values order.
      Ordering is not specified for some BidiMaps such as DualHashBidiMaps.
    </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 an 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
      an 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 user 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-independent 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>
