- final Set<QName> arg = stmt.getArgument();
- final KeyStatement declared = stmt.declared();
- if (substatements.isEmpty()) {
- return arg.equals(declared.argument()) ? new EmptyLocalKeyEffectiveStatement(declared)
- : new EmptyForeignKeyEffectiveStatement(declared, arg);
- }
-
- return arg.equals(declared.argument()) ? new RegularLocalKeyEffectiveStatement(declared, substatements)
- : new RegularForeignKeyEffectiveStatement(declared, arg, substatements);
- }
-
- static @NonNull Object maskSet(final @NonNull Set<QName> set) {
- return set.size() == 1 ? set.iterator().next() : set;
- }
-
- @SuppressWarnings("unchecked")
- static @NonNull Set<QName> unmaskSet(final @NonNull Object masked) {
- if (masked instanceof Set) {
- return (Set<QName>) masked;
- }
- verify(masked instanceof QName, "Unexpected argument %s", masked);
- return ImmutableSet.of((QName) masked);