xsc/pandect

Regression: Improper namespacing of inline deps causes collisions

frenchy64 opened this issue · 6 comments

There are several dependencies that are inlined without a namespace prefix in 1.0.1 (after upgrading from 0.6.1). See all the files not starting with pandect in the file list of the 1.0.1 jar below:

Seems to be caused by 42f0302

META-INF/MANIFEST.MF
project.clj
Util.java
clojure/
clojure/lang/
clojure/lang/PersistentUnrolledVector$Card1$1.class
clojure/lang/PersistentUnrolledVector$Card2.class
clojure/lang/PersistentUnrolledVector$Card0.class
clojure/lang/PersistentUnrolledMap$Card2$1.class
clojure/lang/PersistentUnrolledVector$Card1$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card6$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card2$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card5$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card3$1.class
clojure/lang/PersistentUnrolledVector$Card4.class
clojure/lang/PersistentUnrolledVector$Card0$1.class
clojure/lang/PersistentUnrolledVector$Card6.class
clojure/lang/PersistentUnrolledMap$Card3$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card4$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card1.class
clojure/lang/PersistentUnrolledVector.java
clojure/lang/PersistentUnrolledMap$Card1$1.class
clojure/lang/PersistentUnrolledMap$Transient.class
clojure/lang/PersistentUnrolledMap.class
clojure/lang/PersistentUnrolledVector.class
clojure/lang/PersistentUnrolledVector$Card2$1.class
clojure/lang/PersistentUnrolledVector$Card3.class
clojure/lang/PersistentUnrolledVector$Card3$1.class
clojure/lang/PersistentUnrolledVector$Transient.class
clojure/lang/PersistentUnrolledVector$Card5.class
clojure/lang/PersistentUnrolledMap$Card0$1.class
clojure/lang/PersistentUnrolledMap$Card6.class
clojure/lang/PersistentUnrolledMap$Card5$1.class
clojure/lang/PersistentUnrolledMap.java
clojure/lang/PersistentUnrolledVector$Card2$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card5$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card6$1.class
clojure/lang/PersistentUnrolledMap$Card4.class
clojure/lang/PersistentUnrolledMap$Card1$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card6$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card0.class
clojure/lang/PersistentUnrolledMap$Card4$1.class
clojure/lang/PersistentUnrolledMap$Card2.class
clojure/lang/PersistentUnrolledVector$Card5$1.class
clojure/lang/PersistentUnrolledMap$Card5.class
clojure/lang/PersistentUnrolledMap$Card6$1.class
clojure/lang/PersistentUnrolledMap$Card3.class
clojure/lang/PersistentUnrolledMap$Card1.class
clojure/lang/PersistentUnrolledVector$Card3$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledMap$Card4$UnrolledChunkedSeq.class
clojure/lang/PersistentUnrolledVector$Card4$1.class
pandect/
pandect/impl/
pandect/impl/checksum.clj
pandect/impl/message_digest.clj
pandect/impl/bouncy_castle.clj
pandect/impl/message_digest/
pandect/impl/message_digest/signature.clj
pandect/impl/message_digest/hash.clj
pandect/impl/message_digest/hmac.clj
pandect/buffer.clj
pandect/target/
pandect/target/srcdeps/
pandect/target/srcdeps/pandect/
pandect/target/srcdeps/pandect/riddley/
pandect/target/srcdeps/pandect/riddley/v0v2v0/
pandect/target/srcdeps/pandect/riddley/v0v2v0/riddley/
pandect/target/srcdeps/pandect/riddley/v0v2v0/riddley/walk.clj
pandect/target/srcdeps/pandect/riddley/v0v2v0/riddley/compiler.clj
pandect/target/srcdeps/pandect/clj_tuple/
pandect/target/srcdeps/pandect/clj_tuple/v0v2v2/
pandect/target/srcdeps/pandect/clj_tuple/v0v2v2/clj_tuple.clj
pandect/target/srcdeps/pandect/potemkin/
pandect/target/srcdeps/pandect/potemkin/v0v4v5/
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/walk.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/namespaces.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/utils.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/types.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/template.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/collections.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin/macros.clj
pandect/target/srcdeps/pandect/potemkin/v0v4v5/potemkin.clj
pandect/algo/
pandect/algo/keccak_512.clj
pandect/algo/ripemd320.clj
pandect/algo/crc32.clj
pandect/algo/sha3_224.clj
pandect/algo/siphash.clj
pandect/algo/blake2b_384.clj
pandect/algo/gost.clj
pandect/algo/sha3_384.clj
pandect/algo/ripemd256.clj
pandect/algo/siphash48.clj
pandect/algo/sha512.clj
pandect/algo/sha1.clj
pandect/algo/md5.clj
pandect/algo/md4.clj
pandect/algo/adler32.clj
pandect/algo/md2.clj
pandect/algo/sha3_256.clj
pandect/algo/blake2b_256.clj
pandect/algo/ripemd160.clj
pandect/algo/sha224.clj
pandect/algo/sha384.clj
pandect/algo/keccak_224.clj
pandect/algo/whirlpool.clj
pandect/algo/sha3_512.clj
pandect/algo/blake2b_512.clj
pandect/algo/keccak_384.clj
pandect/algo/keccak_256.clj
pandect/algo/tiger.clj
pandect/algo/ripemd128.clj
pandect/algo/blake2b_160.clj
pandect/algo/sha256.clj
pandect/core.clj
pandect/utils/
pandect/utils/convert.clj
pandect/utils/bouncy_castle_provider.clj
pandect/gen/
pandect/gen/signature_generator.clj
pandect/gen/core.clj
pandect/gen/hmac_generator.clj
pandect/gen/hash_generator.clj
pandect/gen/protocol_utils.clj
pandect/gen/function_utils.clj
pandect/codegen.clj
riddley/
riddley/Util.java
riddley/Util.class
potemkin/
potemkin/PersistentMapProxy$1.class
potemkin/PersistentMapProxy$IEquality.class
potemkin/PersistentMapProxy$MapEntry.class
potemkin/PersistentMapProxy$IMap.class
potemkin/PersistentMapProxy.class
potemkin/PersistentMapProxy.java
xsc commented

@frenchy64 Thanks for reporting this! Could you paste any stacktrace that you're seeing, just so this issue is discoverable for people with similar problems?

This should - in theory - be fixed by enabling Java class repackaging in mranderson. I'll just need to check if there was a reason I originally disabled it.

xsc commented

Okay, short immediate update: The repackaging misses some of the class files, namely it prefixes all the clojure.lang ones, but ignores the potemkin and riddley ones. I'm investigating...

xsc commented

And another follow-up: That issue seems to be fixed in [thomasa/mranderson "0.5.3"]. 🎉 I'll notify you once there has been a new release of pandect with appropriately packaged Java classes.

xsc commented

Aaaaand... one step back. Inlining potemkin/riddley is currently not possible because of benedekfazekas/mranderson#52. So, I think I'm going for the nuclear option of taking the one (!) function from potemkin, adding it directly to the codebase and removing the two problematic dependencies...

Could you paste any stacktrace that you're seeing, just so this issue is discoverable for people with similar problems?

It was discovered by lein-collisions in a project that depends on both pandect and clj-tuple.

File collisions:
clojure/lang/PersistentUnrolledMap$Transient.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card0$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card5$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card4$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card5$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card1$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card4.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
potemkin/PersistentMapProxy.java -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
clojure/lang/PersistentUnrolledVector$Card2.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
potemkin/PersistentMapProxy$IEquality.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
clojure/lang/PersistentUnrolledVector$Card0$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card2$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card3.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card6$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card1$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card3$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card3$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card5$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card4$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
riddley/Util.java -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/riddley/riddley/0.2.0/riddley-0.2.0.jar
clojure/lang/PersistentUnrolledMap$Card3$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
potemkin/PersistentMapProxy$MapEntry.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
clojure/lang/PersistentUnrolledMap.java -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector.java -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card0.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card6.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card4.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card1$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card2.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card3$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
potemkin/PersistentMapProxy$IMap.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
clojure/lang/PersistentUnrolledMap$Card5.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
riddley/Util.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/riddley/riddley/0.2.0/riddley-0.2.0.jar
clojure/lang/PersistentUnrolledMap$Card2$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
potemkin/PersistentMapProxy$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
Util.java -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/riddley/riddley/0.2.0/riddley-0.2.0.jar
potemkin/PersistentMapProxy.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/potemkin/potemkin/0.4.5/potemkin-0.4.5.jar
clojure/lang/PersistentUnrolledMap$Card6$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card3.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card6$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card2$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card1$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card5$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Transient.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card5.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card2$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card4$1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card6.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledMap$Card1.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card6$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card4$UnrolledChunkedSeq.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar
clojure/lang/PersistentUnrolledVector$Card0.class -- 2  collisions:
  -- /home/runner/.m2/repository/pandect/pandect/1.0.1/pandect-1.0.1.jar
  -- /home/runner/.m2/repository/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2.jar