This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new c63b459771 Bump archunit.version from 0.23.1 to 1.0.0
c63b459771 is described below

commit c63b45977176727e4c20b745b2e0c24238519576
Author: Andi Huber <[email protected]>
AuthorDate: Tue Oct 4 06:20:09 2022 +0200

    Bump archunit.version from 0.23.1 to 1.0.0
    
    - see breaking chances referred to in the release notes
    https://github.com/apache/isis/pull/1127
---
 bom/pom.xml                                        |  2 +-
 .../applib/classrules/ArchitectureDomainRules.java | 14 +++---
 .../applib/classrules/ArchitectureJdoRules.java    | 12 ++---
 .../applib/classrules/ArchitectureJpaRules.java    | 10 ++--
 .../applib/classrules/CommonPredicates.java        | 18 ++++----
 .../modulerules/ArchitectureModuleRules.java       | 53 +++++++++++-----------
 6 files changed, 54 insertions(+), 55 deletions(-)

diff --git a/bom/pom.xml b/bom/pom.xml
index f2a2828c8b..c9e537753b 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -319,7 +319,7 @@ It is therefore a copy of org.apache:apache, with 
customisations clearly identif
         <delombok.output>${project.build.directory}/delombok</delombok.output>
 
         <!-- LIBRARY DEPENDENCIES -->
-        <archunit.version>0.23.1</archunit.version>
+        <archunit.version>1.0.0</archunit.version>
         <asciidoctorj.version>2.5.6</asciidoctorj.version>
         <asm.version>9.4</asm.version> <!-- keep in sync with 
org.eclipse.persistence:org.eclipse.persistence.asm -->
         <approvaltests.version>18.4.0</approvaltests.version>
diff --git 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
index 0d324d3abb..16b6cc7056 100644
--- 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
+++ 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureDomainRules.java
@@ -105,7 +105,7 @@ public class ArchitectureDomainRules {
                 .or().areAnnotatedWith(DomainService.class)
                 .and(new DescribedPredicate<>("have an logicalTypeName") {
                     @Override
-                    public boolean apply(final JavaClass javaClass) {
+                    public boolean test(final JavaClass javaClass) {
                         return 
_LogicalNaming.hasExplicitLogicalName(javaClass);
                     }
                 })
@@ -157,7 +157,7 @@ public class ArchitectureDomainRules {
     static DescribedPredicate<JavaAnnotation<?>> 
DomainXxx_logicalTypeName(final Class<? extends Annotation> annotationClass) {
         return new 
DescribedPredicate<>(String.format("@%s(logicalTypeName=...)", 
annotationClass.getSimpleName())) {
             @Override
-            public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+            public boolean test(final JavaAnnotation<?> javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(annotationClass)) {
                     return false;
                 }
@@ -269,8 +269,8 @@ public class ArchitectureDomainRules {
                         }
                         val mixinMethodName = item
                                 .tryGetAnnotationOfType(DomainObject.class)
-                                .transform(DomainObject::mixinMethod)
-                                .or(mixinMethodNameDefault);
+                                .map(DomainObject::mixinMethod)
+                                .orElse(mixinMethodNameDefault);
                         val mixinMethodIfAny = item.getAllMethods().stream()
                                 
.filter(function.apply(mixinMethodName)).findAny();
                         if (!mixinMethodIfAny.isPresent()) {
@@ -370,7 +370,7 @@ public class ArchitectureDomainRules {
     private static DescribedPredicate<JavaClass> areJaxbViewModels() {
         return new DescribedPredicate<JavaClass>("are JAXB view models") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 return input.isAnnotatedWith(XmlRootElement.class);
             }
         };
@@ -397,7 +397,7 @@ public class ArchitectureDomainRules {
     private static DescribedPredicate<JavaClass> areSerializableViewModels() {
         return new DescribedPredicate<JavaClass>("are serializable view 
models") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 val domainObjectIfAny = 
input.tryGetAnnotationOfType(DomainObject.class);
                 if(!domainObjectIfAny.isPresent()) {
                     return false;
@@ -438,7 +438,7 @@ public class ArchitectureDomainRules {
     static DescribedPredicate<JavaClass> eitherOptionalOrCollection() {
         return new DescribedPredicate<JavaClass>("either Optional or 
Collection") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 return input.isAssignableTo(java.util.Optional.class)
                         || input.isAssignableTo(java.util.Collection.class);
             }
diff --git 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
index 16aeacecc9..525b1cd90b 100644
--- 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
+++ 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJdoRules.java
@@ -57,13 +57,13 @@ public class ArchitectureJdoRules {
                 .that().areAnnotatedWith(DomainObject.class)
                 .and(new DescribedPredicate<>("have a logicalTypeName") {
                     @Override
-                    public boolean apply(final JavaClass javaClass) {
+                    public boolean test(final JavaClass javaClass) {
                         return 
_LogicalNaming.hasExplicitLogicalName(javaClass);
                     }
                 })
                 .and(new DescribedPredicate<>("have a @Discriminator") {
                     @Override
-                    public boolean apply(final JavaClass javaClass) {
+                    public boolean test(final JavaClass javaClass) {
                         val discriminatorIfAny = 
javaClass.tryGetAnnotationOfType(Discriminator.class);
                         return discriminatorIfAny.isPresent();
                     }
@@ -200,7 +200,7 @@ public class ArchitectureJdoRules {
     static DescribedPredicate<JavaAnnotation<?>> PersistenceCapable_schema() {
         return new DescribedPredicate<>("@PersistenceCapable(schema=...)") {
             @Override
-            public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+            public boolean test(final JavaAnnotation<?> javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(PersistenceCapable.class)) {
                     return false;
                 }
@@ -215,7 +215,7 @@ public class ArchitectureJdoRules {
     static DescribedPredicate<JavaAnnotation<?>> 
PersistenceCapable_with_DATASTORE_identityType() {
         return new 
DescribedPredicate<>("@PersistenceCapable(identityType=DATASTORE)") {
             @Override
-            public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+            public boolean test(final JavaAnnotation<?> javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(PersistenceCapable.class)) {
                     return false;
                 }
@@ -251,7 +251,7 @@ public class ArchitectureJdoRules {
     static DescribedPredicate<JavaClass> areEntities() {
         return new DescribedPredicate<>("are entities") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 return input.isAnnotatedWith(PersistenceCapable.class);
             }
         };
@@ -260,7 +260,7 @@ public class ArchitectureJdoRules {
     static DescribedPredicate<? super JavaClass> areSubtypeEntities() {
         return new DescribedPredicate<>("are subtype entities ") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 val superclassIfAny = input.getSuperclass();
                 if (!superclassIfAny.isPresent()) {
                     return false;
diff --git 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
index 3a66229a8b..9784148206 100644
--- 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
+++ 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/ArchitectureJpaRules.java
@@ -107,7 +107,7 @@ public class ArchitectureJpaRules {
 
     static DescribedPredicate<JavaAnnotation<?>> 
EntityListeners_with_IsisEntityListener() {
         return new 
DescribedPredicate<JavaAnnotation<?>>("@EntityListener({IsisEntityListener.class})")
 {
-            @Override public boolean apply(final JavaAnnotation<?> 
javaAnnotation) {
+            @Override public boolean test(final JavaAnnotation<?> 
javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(EntityListeners.class)) {
                     return false;
                 }
@@ -260,7 +260,7 @@ public class ArchitectureJpaRules {
 
     static DescribedPredicate<JavaAnnotation<?>> Table_schema() {
         return new DescribedPredicate<JavaAnnotation<?>>("@Table(schema=...)") 
{
-            @Override public boolean apply(final JavaAnnotation<?> 
javaAnnotation) {
+            @Override public boolean test(final JavaAnnotation<?> 
javaAnnotation) {
                 if (!javaAnnotation.getRawType().isAssignableTo(Table.class)) {
                     return false;
                 }
@@ -275,7 +275,7 @@ public class ArchitectureJpaRules {
     static DescribedPredicate<JavaClass> areEntities() {
         return new DescribedPredicate<JavaClass>("are entities") {
             @Override
-            public boolean apply(final JavaClass input) {
+            public boolean test(final JavaClass input) {
                 return input.isAnnotatedWith(Entity.class);
             }
         };
@@ -283,7 +283,7 @@ public class ArchitectureJpaRules {
 
     static DescribedPredicate<JavaAnnotation<?>> Table_uniqueConstraints() {
         return new 
DescribedPredicate<JavaAnnotation<?>>("@Table(uniqueConstraints=...)") {
-            @Override public boolean apply(final JavaAnnotation<?> 
javaAnnotation) {
+            @Override public boolean test(final JavaAnnotation<?> 
javaAnnotation) {
                 if (!javaAnnotation.getRawType().isAssignableTo(Table.class)) {
                     return false;
                 }
@@ -313,7 +313,7 @@ public class ArchitectureJpaRules {
 
     static DescribedPredicate<? super JavaClass> areSubtypeEntities() {
         return new DescribedPredicate<JavaClass>("are subtype entities ") {
-            @Override public boolean apply(final JavaClass input) {
+            @Override public boolean test(final JavaClass input) {
                 val superclassIfAny = input.getSuperclass();
                 if(!superclassIfAny.isPresent()) {
                     return false;
diff --git 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
index dacf942a6c..7e4fabd4e7 100644
--- 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
+++ 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/classrules/CommonPredicates.java
@@ -19,11 +19,11 @@
 package org.apache.isis.testing.archtestsupport.applib.classrules;
 
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import com.tngtech.archunit.base.DescribedPredicate;
-import com.tngtech.archunit.base.Optional;
 import com.tngtech.archunit.core.domain.JavaAnnotation;
 import com.tngtech.archunit.core.domain.JavaClass;
 import com.tngtech.archunit.core.domain.JavaEnumConstant;
@@ -45,8 +45,8 @@ class CommonPredicates {
     static DescribedPredicate<JavaClass> notAbstract() {
         return new DescribedPredicate<>("not abstract") {
             @Override
-            public boolean apply(JavaClass javaClass) {
-                val isAbstract = 
javaClass.getModifiers().stream().anyMatch((JavaModifier x) -> x == 
JavaModifier.ABSTRACT);
+            public boolean test(final JavaClass javaClass) {
+                val isAbstract = 
javaClass.getModifiers().stream().anyMatch((final JavaModifier x) -> x == 
JavaModifier.ABSTRACT);
                 return !isAbstract;
             }
         };
@@ -67,7 +67,7 @@ class CommonPredicates {
     static DescribedPredicate<JavaAnnotation<?>> DomainObject_nature(final 
Nature expectedNature) {
         return new 
DescribedPredicate<>(String.format("@DomainObject(nature=%s)", 
expectedNature.name())) {
             @Override
-            public boolean apply(final JavaAnnotation<?> javaAnnotation) {
+            public boolean test(final JavaAnnotation<?> javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(DomainObject.class)) {
                     return false;
                 }
@@ -81,7 +81,7 @@ class CommonPredicates {
 
     static DescribedPredicate<JavaAnnotation<?>> 
XmlJavaTypeAdapter_value_PersistentEntityAdapter() {
         return new 
DescribedPredicate<JavaAnnotation<?>>("@XmlJavaTypeAdapter(PersistentEntityAdapter.class)")
 {
-            @Override public boolean apply(final JavaAnnotation<?> 
javaAnnotation) {
+            @Override public boolean test(final JavaAnnotation<?> 
javaAnnotation) {
                 if 
(!javaAnnotation.getRawType().isAssignableTo(XmlJavaTypeAdapter.class)) {
                     return false;
                 }
@@ -96,7 +96,7 @@ class CommonPredicates {
     static DescribedPredicate<JavaClass> ofAnEnum() {
         return new DescribedPredicate<JavaClass>("that is an enum") {
             @Override
-            public boolean apply(JavaClass input) {
+            public boolean test(final JavaClass input) {
                 return input.isEnum();
             }
         };
@@ -111,7 +111,7 @@ class CommonPredicates {
                 .format("@%s(%s = %s)", annotClass.getSimpleName(), attribute, 
attributeValue);
         return new DescribedPredicate<JavaAnnotation<?>>(description) {
             @Override
-            public boolean apply(JavaAnnotation<?> input) {
+            public boolean test(final JavaAnnotation<?> input) {
                 if 
(!input.getRawType().getFullName().equals(annotClass.getName())) {
                     return false;
                 }
@@ -148,8 +148,8 @@ class CommonPredicates {
     static DescribedPredicate<JavaClass> areNotAbstract() {
         return new DescribedPredicate<JavaClass>("are not abstract") {
             @Override
-            public boolean apply(JavaClass javaClass) {
-                val isAbstract = 
javaClass.getModifiers().stream().anyMatch((JavaModifier x) -> x == 
JavaModifier.ABSTRACT);
+            public boolean test(final JavaClass javaClass) {
+                val isAbstract = 
javaClass.getModifiers().stream().anyMatch((final JavaModifier x) -> x == 
JavaModifier.ABSTRACT);
                 return !isAbstract;
             }
         };
diff --git 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
index 906af9bc13..308fc0be1b 100644
--- 
a/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
+++ 
b/testing/archtestsupport/applib/src/main/java/org/apache/isis/testing/archtestsupport/applib/modulerules/ArchitectureModuleRules.java
@@ -30,16 +30,15 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.springframework.lang.Nullable;
-
 import com.tngtech.archunit.junit.AnalyzeClasses;
 import com.tngtech.archunit.library.Architectures;
 
 import org.springframework.context.annotation.Import;
 import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.lang.Nullable;
 
-import lombok.experimental.UtilityClass;
 import lombok.val;
+import lombok.experimental.UtilityClass;
 
 /**
  * A library of architecture tests to ensure correct layering and usage of 
packages.
@@ -61,7 +60,7 @@ public class ArchitectureModuleRules {
      * @see #code_dependencies_follow_module_Imports(List)
      * @see 
#code_dependencies_follow_module_Imports_and_subpackage_rules(List, List)
      */
-    public static List<Class<?>> analyzeClasses_packagesOf(Class<?> clazz) {
+    public static List<Class<?>> analyzeClasses_packagesOf(final Class<?> 
clazz) {
         val analyzeClassesAnnot = AnnotationUtils.findAnnotation(clazz, 
AnalyzeClasses.class);
         return Arrays.stream(analyzeClassesAnnot.packagesOf())
                 .filter(x -> x.getSimpleName().endsWith("Module"))
@@ -75,7 +74,7 @@ public class ArchitectureModuleRules {
      * @see 
#code_dependencies_follow_module_Imports_and_subpackage_rules(List, List)
      */
     public static Architectures.LayeredArchitecture 
code_dependencies_follow_module_Imports(
-            List<Class<?>> moduleClasses) {
+            final List<Class<?>> moduleClasses) {
 
         return 
code_dependencies_follow_module_Imports_and_subpackage_rules(moduleClasses, 
Collections.emptyList());
     }
@@ -89,8 +88,8 @@ public class ArchitectureModuleRules {
      * @see #code_dependencies_follow_module_Imports(List)
      */
     public static Architectures.LayeredArchitecture 
code_dependencies_follow_module_Imports_and_subpackage_rules(
-            List<Class<?>> moduleClasses, List<Subpackage> subpackages) {
-        val layeredArchitecture = Architectures.layeredArchitecture();
+            final List<Class<?>> moduleClasses, final List<Subpackage> 
subpackages) {
+        val layeredArchitecture = 
Architectures.layeredArchitecture().consideringAllDependencies();
 
         defineLayers(moduleClasses, layeredArchitecture, subpackages);
 
@@ -114,9 +113,9 @@ public class ArchitectureModuleRules {
     }
 
     private static void defineLayers(
-            List<Class<?>> moduleClasses,
-            Architectures.LayeredArchitecture layeredArchitecture,
-            List<Subpackage> subpackages) {
+            final List<Class<?>> moduleClasses,
+            final Architectures.LayeredArchitecture layeredArchitecture,
+            final List<Subpackage> subpackages) {
         moduleClasses.forEach(moduleClass ->
                 subpackages.forEach(subpackage -> {
                     val subpackageName = subpackage.getName();
@@ -126,9 +125,9 @@ public class ArchitectureModuleRules {
     }
 
     private static void computeDirectDependencies(
-            List<Class<?>> moduleClasses,
-            Map<Class<?>, Set<Class<?>>> directDependenciesByImported,
-            Map<Class<?>, Set<Class<?>>> directDependenciesByImporting) {
+            final List<Class<?>> moduleClasses,
+            final Map<Class<?>, Set<Class<?>>> directDependenciesByImported,
+            final Map<Class<?>, Set<Class<?>>> directDependenciesByImporting) {
         moduleClasses.forEach(
                 moduleClass -> {
                     final Import importAnnotation = 
AnnotationUtils.findAnnotation(moduleClass, Import.class);
@@ -149,9 +148,9 @@ public class ArchitectureModuleRules {
     }
 
     private static void computeTransitiveDependencies(
-            List<Class<?>> moduleClasses,
-            Map<Class<?>, Set<Class<?>>> directDependenciesByImporting,
-            Map<Class<?>, Set<Class<?>>> transitiveDependenciesByImporting) {
+            final List<Class<?>> moduleClasses,
+            final Map<Class<?>, Set<Class<?>>> directDependenciesByImporting,
+            final Map<Class<?>, Set<Class<?>>> 
transitiveDependenciesByImporting) {
         moduleClasses.forEach((moduleClass) -> {
             val transitiveDependencies = new LinkedHashSet<Class<?>>();
             accumulateTransitiveDependencies(moduleClass, 
directDependenciesByImporting,
@@ -161,9 +160,9 @@ public class ArchitectureModuleRules {
     }
 
     private static void checkLayerAccess(
-            Architectures.LayeredArchitecture layeredArchitecture,
-            Map<Class<?>, Set<Class<?>>> transitiveDependenciesByImported,
-            List<Subpackage> subpackages) {
+            final Architectures.LayeredArchitecture layeredArchitecture,
+            final Map<Class<?>, Set<Class<?>>> 
transitiveDependenciesByImported,
+            final List<Subpackage> subpackages) {
         transitiveDependenciesByImported.forEach((importedModule, 
importingModules) -> {
 
             subpackages.forEach(subpackage -> {
@@ -203,20 +202,20 @@ public class ArchitectureModuleRules {
     }
 
 
-    static String nameOf(Class<?> moduleClass, final @Nullable String 
subpackageName) {
+    static String nameOf(final Class<?> moduleClass, final @Nullable String 
subpackageName) {
         val simpleName = moduleClass.getSimpleName();
         val moduleName = simpleName.replace("Module", "");
         return moduleName + (subpackageName != null ? (" " + subpackageName) : 
"");
     }
 
-    static String[] namesOf(Class<?> moduleClass, String... subpackageNames) {
+    static String[] namesOf(final Class<?> moduleClass, final String... 
subpackageNames) {
         val names = Arrays.stream(subpackageNames)
                 .map(subpackageName -> nameOf(moduleClass, subpackageName))
                 .collect(Collectors.toList());
         return names.toArray(new String[] {});
     }
 
-    static String[] namesOf(Set<Class<?>> importingClasses, String... 
subpackageNames) {
+    static String[] namesOf(final Set<Class<?>> importingClasses, final 
String... subpackageNames) {
         val names = new ArrayList<String>();
         importingClasses.forEach(importingClass -> {
             Stream.of(subpackageNames).forEach(subpackageName ->
@@ -225,30 +224,30 @@ public class ArchitectureModuleRules {
         return names.toArray(new String[] {});
     }
 
-    static String packageIdentifierFor(Class<?> moduleClass) {
+    static String packageIdentifierFor(final Class<?> moduleClass) {
         return packageIdentifierFor(moduleClass, null);
     }
 
-    static String packageIdentifierFor(Class<?> moduleClass, @Nullable 
Subpackage subpackage) {
+    static String packageIdentifierFor(final Class<?> moduleClass, @Nullable 
final Subpackage subpackage) {
         return moduleClass.getPackage().getName() +
                 (subpackage != null ? subpackage.packageIdentifier(): "..");
     }
 
-    static String[] both(String str, String[] arr) {
+    static String[] both(final String str, final String[] arr) {
         val strings = new ArrayList<String>();
         strings.add(str);
         strings.addAll(Arrays.asList(arr));
         return strings.toArray(new String[] {});
     }
 
-    static String[] both(String[] arr1, String[] arr2) {
+    static String[] both(final String[] arr1, final String[] arr2) {
         val strings = new ArrayList<String>();
         strings.addAll(Arrays.asList(arr1));
         strings.addAll(Arrays.asList(arr2));
         return strings.toArray(new String[] {});
     }
 
-    static <T> Map<T, Set<T>> invert(Map<T, Set<T>> valueSetByKey) {
+    static <T> Map<T, Set<T>> invert(final Map<T, Set<T>> valueSetByKey) {
         val inverted = new LinkedHashMap<T, Set<T>>();
         valueSetByKey.forEach((key, values) ->
                 values.forEach(value -> {

Reply via email to