+ /**
+ * Bridge between {@link EffectiveStatementWithFlags} and {@link ConstraintMetaDefinition}.
+ *
+ * @param <A> Argument type ({@link Void} if statement does not have argument.)
+ * @param <D> Class representing declared version of this statement.
+ */
+ public interface ConstraintMetaDefinitionMixin<A, D extends DeclaredStatement<A>> extends DocumentedNodeMixin<A, D>,
+ ConstraintMetaDefinition {
+ @Override
+ default Optional<String> getErrorAppTag() {
+ return findFirstEffectiveSubstatementArgument(ErrorAppTagEffectiveStatement.class);
+ }
+
+ @Override
+ default Optional<String> getErrorMessage() {
+ return findFirstEffectiveSubstatementArgument(ErrorMessageEffectiveStatement.class);
+ }
+ }
+