[java-inference] Avoid -> new; pure contracts on methods returning Collection or Map

We assume that such methods return local object. However, we also assume that Collection/Map size is its field. But in fact, it may delegate to another collection

Fixes IDEA-266180 Constant conditions & exceptions false positive with Guava Lists

GitOrigin-RevId: ba6f76bd1b34b1b9503b4be1ce85119ba54f6b3e
This commit is contained in:
Tagir Valeev
2021-04-09 05:13:19 +00:00
committed by intellij-monorepo-bot
parent 62ee5d216b
commit 7b359df0e1
14 changed files with 36 additions and 136 deletions
@@ -112,6 +112,7 @@ public class ProjectBytecodeAnalysis {
if (listOwner instanceof PsiMethod) {
List<EKey> allKeys = collectMethodKeys((PsiMethod)listOwner, primaryKey);
MethodAnnotations methodAnnotations = loadMethodAnnotations((PsiMethod)listOwner, primaryKey, allKeys);
correctMethodAnnotations((PsiMethod)listOwner, primaryKey, methodAnnotations);
return toPsi(primaryKey, methodAnnotations);
}
else if (listOwner instanceof PsiParameter) {
@@ -141,6 +142,32 @@ public class ProjectBytecodeAnalysis {
}
}
private static void correctMethodAnnotations(PsiMethod listOwner, EKey primaryKey, MethodAnnotations methodAnnotations) {
if (methodAnnotations.mutates.isPure()) {
String contractValues = methodAnnotations.contractsValues.get(primaryKey);
if (contractValues == null) return;
List<StandardMethodContract> contracts;
try {
contracts = StandardMethodContract.parseContract(contractValues);
}
catch (StandardMethodContract.ParseException ignore) {
return;
}
if (!ContainerUtil.exists(contracts, c -> c.getReturnValue().equals(ContractReturnValue.returnNew()))) {
return;
}
PsiType returnType = listOwner.getReturnType();
if (InheritanceUtil.isInheritor(returnType, CommonClassNames.JAVA_UTIL_COLLECTION) ||
InheritanceUtil.isInheritor(returnType, CommonClassNames.JAVA_UTIL_MAP)) {
// We consider collection/map size as collection field
// Also, we consider the return value of pure -> new method as local object
// As a result, collection wrappers produced by methods may be marked as local
// while still depend on something else. Let's remove contracts conservatively in this case.
methodAnnotations.contractsValues.remove(primaryKey);
}
}
}
private boolean hasFailContract(PsiParameter listOwner, ParameterAnnotations parameterAnnotations) {
if (!parameterAnnotations.notNull) return false;
PsiMethod method = ObjectUtils.tryCast(listOwner.getDeclarationScope(), PsiMethod.class);
@@ -171,9 +198,9 @@ public class ProjectBytecodeAnalysis {
boolean nullable = methodAnnotations.nullables.contains(primaryKey);
MutationSignature mutationSignature = methodAnnotations.mutates;
Map<String, String> annotationParameters = new LinkedHashMap<>();
String contractValues = methodAnnotations.contractsValues.get(primaryKey);
if (contractValues != null) {
annotationParameters.put("value", contractValues);
String contractValues = methodAnnotations.contractsValues.getOrDefault(primaryKey, "");
if (!contractValues.isEmpty()) {
annotationParameters.put("value", "\"" + contractValues + '"');
}
if (mutationSignature.isPure()) {
annotationParameters.put("pure", "true");
@@ -319,7 +346,7 @@ public class ProjectBytecodeAnalysis {
Map<EKey, Value> failureData = failureSolver.solve();
if (failureData.get(failureKey.mkStable()) == Value.Fail || failureData.get(failureKey.mkUnstable()) == Value.Fail) {
// Always failing method
result.contractsValues.put(key, StreamEx.constant("_", arity).joining(",", "\"", "->fail\""));
result.contractsValues.put(key, StreamEx.constant("_", arity).joining(",", "", "->fail"));
}
else {
Solver outSolver = new Solver(new ELattice<>(Value.Bot, Value.Top), Value.Top);
@@ -523,9 +550,7 @@ public class ProjectBytecodeAnalysis {
.distinct()
.map(str -> str.replace(" ", "")) // for compatibility with existing tests
.joining(";");
if (!result.isEmpty()) {
contracts.put(methodKey, '"' + result + '"');
}
contracts.put(methodKey, result);
}
/**
@@ -1959,7 +1959,6 @@
</item>
<item name='java.lang.invoke.MethodType java.util.List&lt;java.lang.Class&lt;?&gt;&gt; parameterList()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -369,7 +369,6 @@
</item>
<item name='java.util.ArrayList java.util.List&lt;E&gt; subList(int, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -478,7 +477,6 @@
</item>
<item name='java.util.ArrayList.SubList java.util.List&lt;E&gt; subList(int, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1096,7 +1094,6 @@
</item>
<item name='java.util.Arrays java.util.List&lt;T&gt; asList(T...)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1689,7 +1686,6 @@
</item>
<item name='java.util.Collections java.util.Collection&lt;E&gt; checkedCollection(java.util.Collection&lt;E&gt;, java.lang.Class&lt;E&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1702,7 +1698,6 @@
</item>
<item name='java.util.Collections java.util.Collection&lt;T&gt; synchronizedCollection(java.util.Collection&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1712,14 +1707,12 @@
</item>
<item name='java.util.Collections java.util.Collection&lt;T&gt; synchronizedCollection(java.util.Collection&lt;T&gt;, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.Collection&lt;T&gt; unmodifiableCollection(java.util.Collection&lt;? extends T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1766,7 +1759,6 @@
</item>
<item name='java.util.Collections java.util.List&lt;E&gt; checkedList(java.util.List&lt;E&gt;, java.lang.Class&lt;E&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1784,21 +1776,18 @@
</item>
<item name='java.util.Collections java.util.List&lt;T&gt; nCopies(int, T)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.List&lt;T&gt; singletonList(T)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.List&lt;T&gt; synchronizedList(java.util.List&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1808,14 +1797,12 @@
</item>
<item name='java.util.Collections java.util.List&lt;T&gt; synchronizedList(java.util.List&lt;T&gt;, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.List&lt;T&gt; unmodifiableList(java.util.List&lt;? extends T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1830,7 +1817,6 @@
</item>
<item name='java.util.Collections java.util.Map&lt;K,V&gt; checkedMap(java.util.Map&lt;K,V&gt;, java.lang.Class&lt;K&gt;, java.lang.Class&lt;V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1851,14 +1837,12 @@
</item>
<item name='java.util.Collections java.util.Map&lt;K,V&gt; singletonMap(K, V)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.Map&lt;K,V&gt; synchronizedMap(java.util.Map&lt;K,V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1868,7 +1852,6 @@
</item>
<item name='java.util.Collections java.util.Map&lt;K,V&gt; unmodifiableMap(java.util.Map&lt;? extends K,? extends V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1878,14 +1861,12 @@
</item>
<item name='java.util.Collections java.util.Queue&lt;T&gt; asLifoQueue(java.util.Deque&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.Set&lt;E&gt; checkedSet(java.util.Set&lt;E&gt;, java.lang.Class&lt;E&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1912,14 +1893,12 @@
</item>
<item name='java.util.Collections java.util.Set&lt;T&gt; singleton(T)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.Set&lt;T&gt; synchronizedSet(java.util.Set&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1929,14 +1908,12 @@
</item>
<item name='java.util.Collections java.util.Set&lt;T&gt; synchronizedSet(java.util.Set&lt;T&gt;, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.util.Collections java.util.Set&lt;T&gt; unmodifiableSet(java.util.Set&lt;? extends T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1946,7 +1923,6 @@
</item>
<item name='java.util.Collections java.util.SortedMap&lt;K,V&gt; checkedSortedMap(java.util.SortedMap&lt;K,V&gt;, java.lang.Class&lt;K&gt;, java.lang.Class&lt;V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1962,7 +1938,6 @@
</item>
<item name='java.util.Collections java.util.SortedMap&lt;K,V&gt; synchronizedSortedMap(java.util.SortedMap&lt;K,V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1972,7 +1947,6 @@
</item>
<item name='java.util.Collections java.util.SortedMap&lt;K,V&gt; unmodifiableSortedMap(java.util.SortedMap&lt;K,? extends V&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1982,7 +1956,6 @@
</item>
<item name='java.util.Collections java.util.SortedSet&lt;E&gt; checkedSortedSet(java.util.SortedSet&lt;E&gt;, java.lang.Class&lt;E&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1995,7 +1968,6 @@
</item>
<item name='java.util.Collections java.util.SortedSet&lt;T&gt; synchronizedSortedSet(java.util.SortedSet&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2005,7 +1977,6 @@
</item>
<item name='java.util.Collections java.util.SortedSet&lt;T&gt; unmodifiableSortedSet(java.util.SortedSet&lt;T&gt;)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2400,7 +2371,6 @@
</item>
<item name='java.util.Collections.CopiesList java.util.List&lt;E&gt; subList(int, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -36,7 +36,6 @@
</item>
<item name='org.apache.commons.collections.BagUtils org.apache.commons.collections.Bag synchronizedBag(org.apache.commons.collections.Bag)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -46,7 +45,6 @@
</item>
<item name='org.apache.commons.collections.BagUtils org.apache.commons.collections.Bag transformedBag(org.apache.commons.collections.Bag, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -92,7 +90,6 @@
</item>
<item name='org.apache.commons.collections.BagUtils org.apache.commons.collections.SortedBag synchronizedSortedBag(org.apache.commons.collections.SortedBag)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -102,7 +99,6 @@
</item>
<item name='org.apache.commons.collections.BagUtils org.apache.commons.collections.SortedBag transformedSortedBag(org.apache.commons.collections.SortedBag, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -395,7 +391,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer blockingBuffer(org.apache.commons.collections.Buffer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -405,7 +400,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer blockingBuffer(org.apache.commons.collections.Buffer, long)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -415,7 +409,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer boundedBuffer(org.apache.commons.collections.Buffer, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -425,7 +418,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer boundedBuffer(org.apache.commons.collections.Buffer, int, long)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -447,7 +439,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer synchronizedBuffer(org.apache.commons.collections.Buffer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -457,7 +448,6 @@
</item>
<item name='org.apache.commons.collections.BufferUtils org.apache.commons.collections.Buffer transformedBuffer(org.apache.commons.collections.Buffer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -892,7 +882,6 @@
</item>
<item name='org.apache.commons.collections.CollectionUtils java.util.Collection synchronizedCollection(java.util.Collection)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -902,7 +891,6 @@
</item>
<item name='org.apache.commons.collections.CollectionUtils java.util.Collection transformedCollection(java.util.Collection, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1969,7 +1957,6 @@
</item>
<item name='org.apache.commons.collections.FastArrayList.SubList java.util.List subList(int, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2013,21 +2000,18 @@
</item>
<item name='org.apache.commons.collections.FastHashMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.FastHashMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.FastHashMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2136,21 +2120,18 @@
</item>
<item name='org.apache.commons.collections.FastTreeMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.FastTreeMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.FastTreeMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2644,7 +2625,6 @@
</item>
<item name='org.apache.commons.collections.ListUtils java.util.List fixedSizeList(java.util.List)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2662,7 +2642,6 @@
</item>
<item name='org.apache.commons.collections.ListUtils java.util.List lazyList(java.util.List, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2728,7 +2707,6 @@
</item>
<item name='org.apache.commons.collections.ListUtils java.util.List synchronizedList(java.util.List)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2738,7 +2716,6 @@
</item>
<item name='org.apache.commons.collections.ListUtils java.util.List transformedList(java.util.List, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2934,7 +2911,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map fixedSizeMap(java.util.Map)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2964,7 +2940,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map lazyMap(java.util.Map, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2977,7 +2952,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map lazyMap(java.util.Map, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2999,7 +2973,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map multiValueMap(java.util.Map, java.lang.Class)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3009,7 +2982,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map multiValueMap(java.util.Map, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3051,7 +3023,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map synchronizedMap(java.util.Map)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3061,7 +3032,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map synchronizedSortedMap(java.util.SortedMap)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3071,7 +3041,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.Map transformedMap(java.util.Map, org.apache.commons.collections.Transformer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3122,7 +3091,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.SortedMap fixedSizeSortedMap(java.util.SortedMap)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3132,7 +3100,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.SortedMap lazySortedMap(java.util.SortedMap, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3145,7 +3112,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.SortedMap lazySortedMap(java.util.SortedMap, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3167,7 +3133,6 @@
</item>
<item name='org.apache.commons.collections.MapUtils java.util.SortedMap transformedSortedMap(java.util.SortedMap, org.apache.commons.collections.Transformer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3650,7 +3615,6 @@
</item>
<item name='org.apache.commons.collections.SequencedHashMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3673,14 +3637,12 @@
</item>
<item name='org.apache.commons.collections.SequencedHashMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.SequencedHashMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3791,7 +3753,6 @@
</item>
<item name='org.apache.commons.collections.SetUtils java.util.Set synchronizedSet(java.util.Set)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3801,7 +3762,6 @@
</item>
<item name='org.apache.commons.collections.SetUtils java.util.Set transformedSet(java.util.Set, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3847,7 +3807,6 @@
</item>
<item name='org.apache.commons.collections.SetUtils java.util.SortedSet synchronizedSortedSet(java.util.SortedSet)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3857,7 +3816,6 @@
</item>
<item name='org.apache.commons.collections.SetUtils java.util.SortedSet transformedSortedSet(java.util.SortedSet, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -3921,21 +3879,18 @@
</item>
<item name='org.apache.commons.collections.StaticBucketMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.StaticBucketMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.StaticBucketMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -181,7 +181,6 @@
</item>
<item name='org.apache.commons.collections.bag.SynchronizedBag org.apache.commons.collections.Bag decorate(org.apache.commons.collections.Bag)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -220,7 +219,6 @@
</item>
<item name='org.apache.commons.collections.bag.SynchronizedSortedBag org.apache.commons.collections.SortedBag decorate(org.apache.commons.collections.SortedBag)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -252,7 +250,6 @@
</item>
<item name='org.apache.commons.collections.bag.TransformedBag org.apache.commons.collections.Bag decorate(org.apache.commons.collections.Bag, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -281,7 +278,6 @@
</item>
<item name='org.apache.commons.collections.bag.TransformedSortedBag org.apache.commons.collections.SortedBag decorate(org.apache.commons.collections.SortedBag, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -30,7 +30,6 @@
</item>
<item name='org.apache.commons.collections.buffer.BlockingBuffer org.apache.commons.collections.Buffer decorate(org.apache.commons.collections.Buffer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -40,7 +39,6 @@
</item>
<item name='org.apache.commons.collections.buffer.BlockingBuffer org.apache.commons.collections.Buffer decorate(org.apache.commons.collections.Buffer, long)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -73,7 +71,6 @@
</item>
<item name='org.apache.commons.collections.buffer.BoundedBuffer org.apache.commons.collections.buffer.BoundedBuffer decorate(org.apache.commons.collections.Buffer, int)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -83,7 +80,6 @@
</item>
<item name='org.apache.commons.collections.buffer.BoundedBuffer org.apache.commons.collections.buffer.BoundedBuffer decorate(org.apache.commons.collections.Buffer, int, long)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -289,7 +285,6 @@
</item>
<item name='org.apache.commons.collections.buffer.SynchronizedBuffer org.apache.commons.collections.Buffer decorate(org.apache.commons.collections.Buffer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -315,7 +310,6 @@
</item>
<item name='org.apache.commons.collections.buffer.TransformedBuffer org.apache.commons.collections.Buffer decorate(org.apache.commons.collections.Buffer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -124,7 +124,6 @@
</item>
<item name='org.apache.commons.collections.collection.SynchronizedCollection java.util.Collection decorate(java.util.Collection)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -151,7 +150,6 @@
</item>
<item name='org.apache.commons.collections.collection.TransformedCollection java.util.Collection decorate(java.util.Collection, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -242,7 +240,6 @@
</item>
<item name='org.apache.commons.collections.collection.UnmodifiableBoundedCollection org.apache.commons.collections.BoundedCollection decorate(org.apache.commons.collections.BoundedCollection)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -252,7 +249,6 @@
</item>
<item name='org.apache.commons.collections.collection.UnmodifiableBoundedCollection org.apache.commons.collections.BoundedCollection decorateUsing(java.util.Collection)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -396,7 +396,6 @@
</item>
<item name='org.apache.commons.collections.list.FixedSizeList java.util.List decorate(java.util.List)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -480,7 +479,6 @@
</item>
<item name='org.apache.commons.collections.list.GrowthList java.util.List decorate(java.util.List)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -501,7 +499,6 @@
</item>
<item name='org.apache.commons.collections.list.LazyList java.util.List decorate(java.util.List, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -661,7 +658,6 @@
</item>
<item name='org.apache.commons.collections.list.SynchronizedList java.util.List decorate(java.util.List)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -693,7 +689,6 @@
</item>
<item name='org.apache.commons.collections.list.TransformedList java.util.List decorate(java.util.List, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -835,7 +835,6 @@
</item>
<item name='org.apache.commons.collections.map.DefaultedMap java.util.Map decorate(java.util.Map, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -845,7 +844,6 @@
</item>
<item name='org.apache.commons.collections.map.DefaultedMap java.util.Map decorate(java.util.Map, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -858,7 +856,6 @@
</item>
<item name='org.apache.commons.collections.map.DefaultedMap java.util.Map decorate(java.util.Map, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -899,7 +896,6 @@
</item>
<item name='org.apache.commons.collections.map.FixedSizeMap java.util.Map decorate(java.util.Map)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -946,7 +942,6 @@
</item>
<item name='org.apache.commons.collections.map.FixedSizeSortedMap java.util.SortedMap decorate(java.util.SortedMap)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1269,7 +1264,6 @@
</item>
<item name='org.apache.commons.collections.map.LazyMap java.util.Map decorate(java.util.Map, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1282,7 +1276,6 @@
</item>
<item name='org.apache.commons.collections.map.LazyMap java.util.Map decorate(java.util.Map, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1323,7 +1316,6 @@
</item>
<item name='org.apache.commons.collections.map.LazySortedMap java.util.SortedMap decorate(java.util.SortedMap, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1336,7 +1328,6 @@
</item>
<item name='org.apache.commons.collections.map.LazySortedMap java.util.SortedMap decorate(java.util.SortedMap, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1375,7 +1366,6 @@
</item>
<item name='org.apache.commons.collections.map.LinkedMap java.util.List asList()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1450,7 +1440,6 @@
</item>
<item name='org.apache.commons.collections.map.ListOrderedMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1462,21 +1451,18 @@
</item>
<item name='org.apache.commons.collections.map.ListOrderedMap java.util.List valueList()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.map.ListOrderedMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.map.ListOrderedMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1828,7 +1814,6 @@
</item>
<item name='org.apache.commons.collections.map.MultiValueMap org.apache.commons.collections.map.MultiValueMap decorate(java.util.Map, java.lang.Class)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -1838,7 +1823,6 @@
</item>
<item name='org.apache.commons.collections.map.MultiValueMap org.apache.commons.collections.map.MultiValueMap decorate(java.util.Map, org.apache.commons.collections.Factory)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2073,7 +2057,6 @@
</item>
<item name='org.apache.commons.collections.map.SingletonMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2086,7 +2069,6 @@
</item>
<item name='org.apache.commons.collections.map.SingletonMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2200,21 +2182,18 @@
</item>
<item name='org.apache.commons.collections.map.StaticBucketMap java.util.Collection values()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.map.StaticBucketMap java.util.Set entrySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.apache.commons.collections.map.StaticBucketMap java.util.Set keySet()'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2345,7 +2324,6 @@
</item>
<item name='org.apache.commons.collections.map.TransformedMap java.util.Map decorate(java.util.Map, org.apache.commons.collections.Transformer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -2381,7 +2359,6 @@
</item>
<item name='org.apache.commons.collections.map.TransformedSortedMap java.util.SortedMap decorate(java.util.SortedMap, org.apache.commons.collections.Transformer, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -162,7 +162,6 @@
</item>
<item name='org.apache.commons.collections.set.MapBackedSet java.util.Set decorate(java.util.Map)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -172,7 +171,6 @@
</item>
<item name='org.apache.commons.collections.set.MapBackedSet java.util.Set decorate(java.util.Map, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -252,7 +250,6 @@
</item>
<item name='org.apache.commons.collections.set.SynchronizedSet java.util.Set decorate(java.util.Set)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -283,7 +280,6 @@
</item>
<item name='org.apache.commons.collections.set.SynchronizedSortedSet java.util.SortedSet decorate(java.util.SortedSet)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -327,7 +323,6 @@
</item>
<item name='org.apache.commons.collections.set.TransformedSet java.util.Set decorate(java.util.Set, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -351,7 +346,6 @@
</item>
<item name='org.apache.commons.collections.set.TransformedSortedSet java.util.SortedSet decorate(java.util.SortedSet, org.apache.commons.collections.Transformer)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_,_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -152,7 +152,6 @@
</item>
<item name='org.apache.velocity.runtime.directive.Directive org.apache.velocity.runtime.directive.Scope makeScope(java.lang.Object)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val name="value" val="&quot;_-&gt;new&quot;"/>
<val name="pure" val="true"/>
</annotation>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -208,7 +208,7 @@ public class BytecodeAnalysisIntegrationTest extends LightJavaCodeInsightFixture
}
}
public void _testExportInferredAnnotations() {
public void testExportInferredAnnotations() {
PsiPackage rootPackage = JavaPsiFacade.getInstance(getProject()).findPackage("");
assertNotNull(rootPackage);
@@ -11,9 +11,9 @@ public class NewObjectEquality
if(<warning descr="New object is compared using '=='">s1</warning> == s) {}
}
void testInferredContract(Foo foo, List<?> c) {
void testInferredContract(Foo foo, Optional<?> c) {
if(foo == <warning descr="New object is compared using '=='">Foo.create()</warning>) {}
if(c == <warning descr="New object is compared using '=='">Collections.unmodifiableList(c)</warning>) {}
if(c == <warning descr="New object is compared using '=='">Optional.of("foo")</warning>) {}
}
}
class Foo {
@@ -67,7 +67,7 @@ class Y {
is[0] = 1000;
<warning descr="Object instantiation inside 'hashCode()'">Integer.valueOf(is[0])</warning>;
int hashCode = 7;
java.util.Arrays.<warning descr="Object instantiation inside 'hashCode()'">asList</warning>();
java.util.Optional.<warning descr="Object instantiation inside 'hashCode()'">of</warning>("foo");
for (Object fooElement : <warning descr="Object instantiation inside 'hashCode()' (iterator)">fooList</warning>) {
hashCode = 31 * hashCode + (fooElement == null ? 0 : fooElement.hashCode());
}