public static LeafEffectiveStatement copyLeaf(final LeafEffectiveStatement original, final QName argument,
final int flags) {
checkArgument(original instanceof AbstractLeafEffectiveStatement, "Unsupported original %s", original);
- return new RegularLeafEffectiveStatement((AbstractLeafEffectiveStatement) original, argument, flags);
+ final var orig = (AbstractLeafEffectiveStatement) original;
+ return argument.equals(orig.getDeclared().argument()) ? new EmptyLeafEffectiveStatement(orig, flags)
+ : new RegularLeafEffectiveStatement(orig, argument, flags);
}
public static LeafEffectiveStatement createLeaf(final LeafStatement declared, final QName argument, final int flags,
super(declared, flags, substatements);
}
+ public EmptyLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final int flags) {
+ super(original, flags);
+ }
+
@Override
public QName argument() {
return getDeclared().argument();