Ranides Atterwim %!s(int64=10) %!d(string=hai) anos
pai
achega
b21c436dc1

+ 159 - 154
assira/pom.xml

@@ -1,132 +1,132 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>net.ranides</groupId>
-		<artifactId>assira.common</artifactId>
-		<version>2.0.1</version>
-	</parent>
-	<name>assira</name>
-	<groupId>net.ranides</groupId>
-	<artifactId>assira</artifactId>
-	<version>2.0.1</version>
-	<packaging>jar</packaging>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>net.ranides</groupId>
+        <artifactId>assira.common</artifactId>
+        <version>2.0.1</version>
+    </parent>
+    <name>assira</name>
+    <groupId>net.ranides</groupId>
+    <artifactId>assira</artifactId>
+    <version>2.0.1</version>
+    <packaging>jar</packaging>
     
-	<profiles>
-		<profile>
-			<id>recent-coverage</id>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.jacoco</groupId>
-						<artifactId>jacoco-maven-plugin</artifactId>
-						<version>0.7.5.201505241946</version>
-						<configuration>
-							<excludes>
-								<exclude>net/ranides/assira/test/**</exclude>
+    <profiles>
+        <profile>
+            <id>recent-coverage</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.jacoco</groupId>
+                        <artifactId>jacoco-maven-plugin</artifactId>
+                        <version>0.7.5.201505241946</version>
+                        <configuration>
+                            <excludes>
+                                <exclude>net/ranides/assira/test/**</exclude>
 								
-								<!--  klasy dostatecznie przetestowane -->
+                                <!--  klasy dostatecznie przetestowane -->
 								
-								<exclude>net/ranides/assira/collection/maps/AMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AIntMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AIntMap$*</exclude>
 
-								<exclude>net/ranides/assira/collection/maps/ASortedMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/ASortedMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntSortedMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AIntSortedMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/ASortedMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/ASortedMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AIntSortedMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AIntSortedMap$*</exclude>
 
-								<exclude>net/ranides/assira/collection/maps/AHashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AHashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/HashMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntHashMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AHashMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AHashMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/HashMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/HashMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntHashMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntHashMap$*</exclude>
 
-								<exclude>net/ranides/assira/collection/maps/AVLTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/AVLTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntAVLTreeMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AVLTreeMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/AVLTreeMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntAVLTreeMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntAVLTreeMap$*</exclude>
 
-								<exclude>net/ranides/assira/collection/maps/RBTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/RBTreeMap$*</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IntRBTreeMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/RBTreeMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/RBTreeMap$*</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntRBTreeMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IntRBTreeMap$*</exclude>
 
-								<exclude>net/ranides/assira/collection/maps/CustomMap.class</exclude>
-								<exclude>net/ranides/assira/collection/maps/IdentMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/CustomMap.class</exclude>
+                                <exclude>net/ranides/assira/collection/maps/IdentMap.class</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/ASet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/ASet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AIntSet.class</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/ASortedSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/ASortedSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSortedSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIntSortedSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/ASortedSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/ASortedSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AIntSortedSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AIntSortedSet$*</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/AHashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AHashSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/HashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntHashSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntHashSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AHashSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AHashSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/HashSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntHashSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntHashSet$*</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/AVLTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AVLTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntAVLTreeSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AVLTreeSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AVLTreeSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntAVLTreeSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntAVLTreeSet$*</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/RBTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/RBTreeSet$*</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IntRBTreeSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/RBTreeSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/RBTreeSet$*</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntRBTreeSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IntRBTreeSet$*</exclude>
 
-								<exclude>net/ranides/assira/collection/sets/CustomSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/IdentSet.class</exclude>
-								<exclude>net/ranides/assira/collection/sets/AIdentSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/CustomSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/IdentSet.class</exclude>
+                                <exclude>net/ranides/assira/collection/sets/AIdentSet.class</exclude>
                                 
-								<exclude>net/ranides/assira/collection/lookups/Lookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/Lookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ALookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ALookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ASortedLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/ASortedLookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/Lookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/Lookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/ALookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/ALookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/ASortedLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/ASortedLookup$*</exclude>
                                 
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
                                 
-								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AVLTreeLookup$*</exclude>
-								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/RBTreeLookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AVLTreeLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AVLTreeLookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/RBTreeLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/RBTreeLookup$*</exclude>
                                 
-								<exclude>net/ranides/assira/collection/lookups/CustomLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/HashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/IdentLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/CustomLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/HashLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/IdentLookup.class</exclude>
                                 
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
-								<exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AHashLookup.class</exclude>
+                                <exclude>net/ranides/assira/collection/lookups/AHashLookup$*</exclude>
                                 
-								<exclude>net/ranides/assira/collection/arrays/ArrayAllocator.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/ArraySearch.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/ArraySort.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/ArrayUtils.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/ArrayUtils$*</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/ArrayAllocator.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/ArraySearch.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/ArraySort.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/ArrayUtils.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/ArrayUtils$*</exclude>
                                 
-								<exclude>net/ranides/assira/collection/arrays/IntArrayAllocator.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/IntArraySearch.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/IntArraySort.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/IntArrayUtils.class</exclude>
-								<exclude>net/ranides/assira/collection/arrays/IntArrayUtils$*</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/IntArrayAllocator.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/IntArraySearch.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/IntArraySort.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/IntArrayUtils.class</exclude>
+                                <exclude>net/ranides/assira/collection/arrays/IntArrayUtils$*</exclude>
 
                                 <exclude>net/ranides/assira/collection/lists/AIntList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/AIntList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntArrayList.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntArrayList$*</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntRange.class</exclude>
-								<exclude>net/ranides/assira/collection/lists/IntRange$*</exclude>
+                                <exclude>net/ranides/assira/collection/lists/AIntList$*</exclude>
+                                <exclude>net/ranides/assira/collection/lists/IntArrayList.class</exclude>
+                                <exclude>net/ranides/assira/collection/lists/IntArrayList$*</exclude>
+                                <exclude>net/ranides/assira/collection/lists/IntRange.class</exclude>
+                                <exclude>net/ranides/assira/collection/lists/IntRange$*</exclude>
 								
                                 <exclude>net/ranides/assira/collection/rmq/AIntRMQList.class</exclude>
                                 <exclude>net/ranides/assira/collection/rmq/ARMQList.class</exclude>
@@ -143,57 +143,62 @@
                                 <exclude>net/ranides/assira/text/FormatHex.class</exclude>
                                 <exclude>net/ranides/assira/text/FormatNumber.class</exclude>
                                 <exclude>net/ranides/assira/text/FormatNumber$*</exclude>
-							</excludes>
-						</configuration>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-	</profiles>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 	
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-				<version>0.7.5.201505241946</version>
-				<configuration>
-					<excludes>
-						<exclude>net/ranides/assira/test/**</exclude>
-					</excludes>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>0.7.5.201505241946</version>
+                <configuration>
+                    <excludes>
+                        <exclude>net/ranides/assira/test/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     
-	<repositories>
-		<repository>
-			<id>ranides.net</id>
-			<name>ranides.net</name>
-			<url>http://maven.ranides.net</url>
-		</repository>
-	</repositories>
+    <repositories>
+        <repository>
+            <id>ranides.net</id>
+            <name>ranides.net</name>
+            <url>http://maven.ranides.net</url>
+        </repository>
+    </repositories>
     
-	<dependencies>
-		<dependency>
-			<artifactId>assira.asm</artifactId>
-			<groupId>net.ranides</groupId>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>net.ranides</groupId>
-			<artifactId>assira.junit</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-simple</artifactId>
-		</dependency>
-	</dependencies>
+    <dependencies>
+        <dependency>
+            <artifactId>assira.asm</artifactId>
+            <groupId>net.ranides</groupId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.ranides</groupId>
+            <artifactId>assira.junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>annotations</artifactId>
+            <version>3.0.1u2</version>
+        </dependency>
+    </dependencies>
 </project>

+ 1 - 1
assira/src/main/java/net/ranides/assira/collection/HashComparator.java

@@ -27,7 +27,7 @@ public interface HashComparator<Q> extends HashFunction<Q>, Comparator<Q>, Seria
         return new HashComparator<Q>() {
             @Override
             public int compare(Q a, Q b) {
-                return -that.compare(a, b);
+                return that.compare(b, a);
             }
 
             @Override

+ 1 - 1
assira/src/main/java/net/ranides/assira/collection/HashIntComparator.java

@@ -32,7 +32,7 @@ public interface HashIntComparator extends HashComparator<Integer>, IntComparato
         return new HashIntComparator() {
             @Override
             public int compare(int a, int b) {
-                return -that.compare(a, b);
+                return that.compare(b, a);
             }
 
             @Override

+ 9 - 0
assira/src/main/java/net/ranides/assira/collection/lists/IntArrayList.java

@@ -6,9 +6,11 @@
  */
 package net.ranides.assira.collection.lists;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.arrays.IntArrayUtils;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.RandomAccess;
 import net.ranides.assira.annotations.Meta;
 import net.ranides.assira.collection.IntCollection;
@@ -202,6 +204,7 @@ public class IntArrayList extends AIntList implements BlockCollection<Integer>,
      * @return the backing array.
      */
     @SuppressWarnings("PMD.MethodReturnsInternalArray")
+    @SuppressFBWarnings("EI_EXPOSE_REP")
     @Meta.Unsafe
     public int[] elements() {
         return data;
@@ -460,6 +463,11 @@ public class IntArrayList extends AIntList implements BlockCollection<Integer>,
         }
         return new IntArrayFragment(from, to);
     }
+
+    @Override
+    public int compareTo(List<? extends Integer> list) {
+        return list instanceof IntArrayList ? compareTo((IntArrayList)list) : super.compareTo(list);
+    }
     
     /**
      * Compares this array list to another array list.
@@ -471,6 +479,7 @@ public class IntArrayList extends AIntList implements BlockCollection<Integer>,
      * @return a negative integer, zero, or a positive integer as this list is
      * lexicographically less than, equal to, or greater than the argument.
      */
+    @SuppressFBWarnings("CO_SELF_NO_OBJECT")
     public int compareTo(IntArrayList list) {
         int s1 = size(), s2 = list.size();
         int a1[] = data, a2[] = list.data;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/lookups/AVLTreeLookup.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.lookups;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
 import java.util.ListIterator;
@@ -1055,6 +1056,7 @@ public final class AVLTreeLookup<K> extends ASortedLookup<K> implements java.io.
      * {@link java.util.SortedMap#firstKey()} or
      * {@link java.util.Collection#size()} must be always computed on-the-fly.
      */
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/lookups/RBTreeLookup.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.lookups;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
 import java.util.ListIterator;
@@ -1096,6 +1097,7 @@ public final class RBTreeLookup<K> extends ASortedLookup<K> implements java.io.S
 
     }
 
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/maps/AVLTreeMap.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.maps;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
 import java.util.ListIterator;
@@ -1017,6 +1018,7 @@ public final class AVLTreeMap<K, V> extends ASortedMap<K, V> implements java.io.
      * {@link java.util.SortedMap#firstKey()} or
      * {@link java.util.Collection#size()} must be always computed on-the-fly.
      */
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/maps/IntAVLTreeMap.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.maps;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.IntComparator;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
@@ -1172,6 +1173,7 @@ public class IntAVLTreeMap<V> extends AIntSortedMap<V> implements java.io.Serial
      * {@link java.util.SortedMap#firstKey()} or
      * {@link java.util.Collection#size()} must be always computed on-the-fly.
      */
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 3L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/maps/IntRBTreeMap.java

@@ -7,6 +7,7 @@
 
 package net.ranides.assira.collection.maps;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.IntComparator;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
@@ -1097,6 +1098,7 @@ public final class IntRBTreeMap<V> extends AIntSortedMap<V> implements java.io.S
 
     }
     
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/maps/RBTreeMap.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.maps;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Comparator;
 import java.util.ListIterator;
@@ -1095,6 +1096,7 @@ public final class RBTreeMap<K, V> extends ASortedMap<K, V> implements java.io.S
     }
 
     
+    @SuppressFBWarnings("SE_INNER_CLASS")
     private final class Submap extends ASubmap implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 3 - 0
assira/src/main/java/net/ranides/assira/collection/rmq/IntRMQTree.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.rmq;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.Serializable;
 import net.ranides.assira.functional.IntFold;
 import java.util.ArrayList;
@@ -20,8 +21,10 @@ public class IntRMQTree extends AIntRMQList implements Serializable {
     
     private static final long serialVersionUID = 1L;
     
+    @SuppressFBWarnings("SE_BAD_FIELD")
     protected final IntFold fold;
     
+    @SuppressFBWarnings("SE_BAD_FIELD")
     protected final IntStrategy segmenter;
 
     public IntRMQTree(IntFold fold) {

+ 3 - 0
assira/src/main/java/net/ranides/assira/collection/rmq/RMQTree.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.rmq;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.Serializable;
 import net.ranides.assira.functional.Fold;
 import java.util.ArrayList;
@@ -18,8 +19,10 @@ public class RMQTree<T> extends ARMQList<T> implements Serializable {
     
     private static final long serialVersionUID = 1L;
     
+    @SuppressFBWarnings("SE_BAD_FIELD")
     protected final Fold<T> fold;
     
+    @SuppressFBWarnings("SE_BAD_FIELD")
     protected final Strategy<T> segmenter;
     
     public RMQTree(Fold<T> function) {

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/sets/AVLTreeSet.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.sets;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Collection;
 import java.util.Comparator;
@@ -1082,6 +1083,7 @@ public class AVLTreeSet<K> extends ASortedSet<K> implements java.io.Serializable
 		return new Subset(begin, bottom, end, top);
 	}
 
+    @SuppressFBWarnings("SE_INNER_CLASS")
     protected final class Subset extends ASubset implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/sets/IntAVLTreeSet.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.collection.sets;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.IntComparator;
 import net.ranides.assira.collection.iterators.IntListIterator;
 import java.util.Collection;
@@ -1200,6 +1201,7 @@ public class IntAVLTreeSet extends AIntSortedSet implements java.io.Serializable
         }
     }
 	
+    @SuppressFBWarnings("SE_INNER_CLASS")
     protected final class Subset extends ASubset implements java.io.Serializable {
 
         private static final long serialVersionUID = 1L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/sets/IntRBTreeSet.java

@@ -18,6 +18,7 @@
 
 package net.ranides.assira.collection.sets;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.IntComparator;
 import net.ranides.assira.collection.iterators.IntListIterator;
 import java.util.Collection;
@@ -1142,6 +1143,7 @@ public class IntRBTreeSet extends AIntSortedSet implements java.io.Serializable
         }
     }
 
+    @SuppressFBWarnings("SE_INNER_CLASS")
     protected final class Subset extends ASubset implements java.io.Serializable {
 
         private static final long serialVersionUID = 1L;

+ 2 - 0
assira/src/main/java/net/ranides/assira/collection/sets/RBTreeSet.java

@@ -7,6 +7,7 @@
 
 package net.ranides.assira.collection.sets;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.ranides.assira.collection.iterators.AListIterator;
 import java.util.Collection;
 import java.util.Comparator;
@@ -1101,6 +1102,7 @@ public class RBTreeSet<K> extends ASortedSet<K> implements java.io.Serializable
         }
     }
 
+    @SuppressFBWarnings("SE_INNER_CLASS")
     protected final class Subset extends ASubset implements java.io.Serializable {
 
         private static final long serialVersionUID = 2L;

+ 4 - 1
assira/src/main/java/net/ranides/assira/system/RuntimeUtils.java

@@ -6,6 +6,7 @@
  */
 package net.ranides.assira.system;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.LinkedList;
@@ -39,6 +40,7 @@ public final class RuntimeUtils {
      *      
      */
     @SuppressWarnings("PMD.DoNotCallGarbageCollectionExplicitly")
+    @SuppressFBWarnings("DM_GC")
     public static long performGC() {
         long prev = getMemoryUse();
         Runtime.getRuntime().gc();
@@ -51,9 +53,10 @@ public final class RuntimeUtils {
      *      Estimated amount of memory released by GC
      */
     @SuppressWarnings({
-        "PMD.DoNotCallGarbageCollectionExplicitly",
+        "PMD.DoNotCallGarbageCollectionExplicitly", 
         "MismatchedQueryAndUpdateOfCollection"
     })
+    @SuppressFBWarnings("DM_GC")
     public static long forceGC() {
         long prev = Runtime.getRuntime().totalMemory();
         int block = (int)Math.min(Integer.MAX_VALUE, Runtime.getRuntime().freeMemory());

+ 142 - 142
assira/src/main/java/net/ranides/assira/text/MazoviaCharset.java

@@ -1,142 +1,142 @@
-package net.ranides.assira.text;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CoderResult;
-import java.nio.charset.spi.CharsetProvider;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-import net.ranides.assira.collection.sets.HashSet;
-
-public class MazoviaCharset extends CharsetProvider {
-
-    public static final String CS_NAME = "mazovia";
-    
-    public final static String[] NAMES = new String[]{
-        "cp-896",
-        "cp896",
-        "cp620",
-        "cp-620",
-        "cp790",
-        "cp-790"
-    };
-    
-    private static final Set<String> NAMES_SET = new HashSet<>(NAMES);
-    
-    private static final List<Charset> CHARSETS = Arrays.asList(new MCharset());
-    
-    private static final char[][] CHARMAP = new char[][]{
-        {'\u0104', 143}//Ą
-      , {'\u0105', 134}//ą
-      , {'\u0106', 149}//Ć
-      , {'\u0107', 141}//ć
-      , {'\u0118', 144}//Ę
-      , {'\u0119', 145}//ę
-      , {'\u0141', 156}//Ł
-      , {'\u0142', 146}//ł
-      , {'\u0143', 165}//Ń
-      , {'\u0144', 164}//ń
-      , {'\u00D3', 163}//Ó
-      , {'\u00F3', 162}//ó
-      , {'\u015A', 152}//Ś
-      , {'\u015B', 158}//ś
-      , {'\u0179', 160}//Ź
-      , {'\u017A', 166}//ź
-      , {'\u017B', 161}//Ż
-      , {'\u017C', 167}//ż
-    };
-
-    @Override
-    public Iterator<Charset> charsets() {
-        return CHARSETS.iterator();
-    }
-
-    @Override
-    public Charset charsetForName(String charsetName) {
-        if(CS_NAME.equalsIgnoreCase(charsetName)){
-            return CHARSETS.get(0);
-        }
-        if (NAMES_SET.contains(charsetName.toLowerCase(Locale.ROOT).trim())) {
-            return CHARSETS.get(0);
-        } 
-        return null;
-    }
-    
-    private static class MCharset extends Charset {
-
-        public MCharset() {
-            super(CS_NAME, NAMES);
-        }
-
-        @Override
-        public boolean contains(Charset cs) {
-            return cs.equals(this);
-        }
-        
-        @Override
-        public CharsetEncoder newEncoder() {
-            return new MEncoder(this);
-        }
-
-        @Override
-        public CharsetDecoder newDecoder() {
-            return new MDecoder(this);
-        }
-
-    }
-    
-    private static class MEncoder extends CharsetEncoder {
-
-        public MEncoder(Charset cs) {
-            super(cs, 1, 1);
-        }
-
-        @Override
-        protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {
-            while (in.hasRemaining()) {
-                out.put((byte) (encodeChar(in.get()) & 0xFF));
-            }
-            return CoderResult.UNDERFLOW;
-        }
-
-        private char encodeChar(char c) {
-            for (char[] m : CHARMAP) {
-                if (c == m[0]) {
-                    return m[1];
-                }
-            }
-            return c;
-        }
-    }
-
-    private static class MDecoder extends CharsetDecoder {
-
-        public MDecoder(Charset cs) {
-            super(cs, 1, 1);
-        }
-
-        @Override
-        protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) {
-            while (in.hasRemaining()) {
-                out.put(decodeChar((char) (in.get() & 0x00FF)));
-            }
-            return CoderResult.UNDERFLOW;
-        }
-
-        private char decodeChar(char c) {
-            for (char[] m : CHARMAP) {
-                if (c == m[1]) {
-                    return m[0];
-                }
-            }
-            return c;
-        }
-    }
-
-}
+package net.ranides.assira.text;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import net.ranides.assira.collection.sets.HashSet;
+
+public class MazoviaCharset extends CharsetProvider {
+
+    private static final String NAME = "mazovia";
+    
+    private static final String[] NAMES = new String[]{
+        "cp-896",
+        "cp896",
+        "cp620",
+        "cp-620",
+        "cp790",
+        "cp-790"
+    };
+    
+    private static final Set<String> NAMES_SET = new HashSet<>(NAMES);
+    
+    private static final List<Charset> CHARSETS = Arrays.asList(new MCharset());
+    
+    private static final char[][] CHARMAP = new char[][]{
+        {'\u0104', 143}//Ą
+      , {'\u0105', 134}//ą
+      , {'\u0106', 149}//Ć
+      , {'\u0107', 141}//ć
+      , {'\u0118', 144}//Ę
+      , {'\u0119', 145}//ę
+      , {'\u0141', 156}//Ł
+      , {'\u0142', 146}//ł
+      , {'\u0143', 165}//Ń
+      , {'\u0144', 164}//ń
+      , {'\u00D3', 163}//Ó
+      , {'\u00F3', 162}//ó
+      , {'\u015A', 152}//Ś
+      , {'\u015B', 158}//ś
+      , {'\u0179', 160}//Ź
+      , {'\u017A', 166}//ź
+      , {'\u017B', 161}//Ż
+      , {'\u017C', 167}//ż
+    };
+
+    @Override
+    public Iterator<Charset> charsets() {
+        return CHARSETS.iterator();
+    }
+
+    @Override
+    public Charset charsetForName(String charsetName) {
+        if(NAME.equalsIgnoreCase(charsetName)){
+            return CHARSETS.get(0);
+        }
+        if (NAMES_SET.contains(charsetName.toLowerCase(Locale.ROOT).trim())) {
+            return CHARSETS.get(0);
+        } 
+        return null;
+    }
+    
+    private static class MCharset extends Charset {
+
+        public MCharset() {
+            super(NAME, NAMES);
+        }
+
+        @Override
+        public boolean contains(Charset cs) {
+            return cs.equals(this);
+        }
+        
+        @Override
+        public CharsetEncoder newEncoder() {
+            return new MEncoder(this);
+        }
+
+        @Override
+        public CharsetDecoder newDecoder() {
+            return new MDecoder(this);
+        }
+
+    }
+    
+    private static class MEncoder extends CharsetEncoder {
+
+        public MEncoder(Charset cs) {
+            super(cs, 1, 1);
+        }
+
+        @Override
+        protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {
+            while (in.hasRemaining()) {
+                out.put((byte) (encodeChar(in.get()) & 0xFF));
+            }
+            return CoderResult.UNDERFLOW;
+        }
+
+        private char encodeChar(char c) {
+            for (char[] m : CHARMAP) {
+                if (c == m[0]) {
+                    return m[1];
+                }
+            }
+            return c;
+        }
+    }
+
+    private static class MDecoder extends CharsetDecoder {
+
+        public MDecoder(Charset cs) {
+            super(cs, 1, 1);
+        }
+
+        @Override
+        protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) {
+            while (in.hasRemaining()) {
+                out.put(decodeChar((char) (in.get() & 0x00FF)));
+            }
+            return CoderResult.UNDERFLOW;
+        }
+
+        private char decodeChar(char c) {
+            for (char[] m : CHARMAP) {
+                if (c == m[1]) {
+                    return m[0];
+                }
+            }
+            return c;
+        }
+    }
+
+}