+ @Beta
+ public final boolean hasImplicitParentSupport() {
+ return definition.getFactory() instanceof ImplicitParentAwareStatementSupport;
+ }
+
+ @Beta
+ public final StatementContextBase<?, ?, ?> wrapWithImplicit(final StatementContextBase<?, ?, ?> original) {
+ final Optional<StatementSupport<?, ?, ?>> optImplicit = definition.getImplicitParentFor(
+ original.getPublicDefinition());
+ if (!optImplicit.isPresent()) {
+ return original;
+ }
+
+ final StatementDefinitionContext<?, ?, ?> def = new StatementDefinitionContext<>(optImplicit.get());
+ final CopyType type = original.getCopyHistory().getLastOperation();
+ final SubstatementContext<?, ?, ?> result = new SubstatementContext(original.getParentContext(), def,
+ original.getStatementSourceReference(), original.rawStatementArgument(), original.getStatementArgument(),
+ type);
+
+ result.addEffectiveSubstatement(new SubstatementContext<>(original, result));
+ result.setCompletedPhase(original.getCompletedPhase());
+ return result;
+ }
+