+ protected FeatureStatement createEmptyDeclared(@NonNull final StmtContext<QName, FeatureStatement, ?> ctx) {
+ return new EmptyFeatureStatement(ctx.coerceStatementArgument());
+ }
+
+ @Override
+ protected FeatureEffectiveStatement createEffective(final Current<QName, FeatureStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return substatements.isEmpty()
+ ? new EmptyFeatureEffectiveStatement(stmt.declared(), stmt.getSchemaPath(), EMPTY_EFFECTIVE_FLAGS)
+ : new RegularFeatureEffectiveStatement(stmt.declared(), stmt.getSchemaPath(),
+ computeFlags(substatements), substatements);
+ }
+
+ private static int computeFlags(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new FlagsBuilder()
+ .setStatus(findFirstArgument(substatements, StatusEffectiveStatement.class, Status.CURRENT))
+ .toFlags();