@Override public <A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> AbstractPrerequisite<StmtContext<A, D, E>> requiresCtx(final StmtContext<A, D, E> context, final ModelProcessingPhase phase) { return requiresCtxImpl(context, phase); }
@Override public <K, N extends StatementNamespace<K, ?, ?>> Prerequisite<StmtContext<?, ?, ?>> requiresCtx( final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key, final ModelProcessingPhase phase) { return requiresCtxImpl(context, namespace, key, phase); }
@Override public <K, D extends DeclaredStatement<?>, N extends StatementNamespace<K, ? extends D, ?>> AbstractPrerequisite<StmtContext<?, D, ?>> requiresDeclaredCtx(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) { return requiresCtxImpl(context, namespace, key, FULL_DECLARATION); }
@Override public <K, N extends StatementNamespace<K, ?, ?>> Prerequisite<StmtContext<?, ?, ?>> requiresCtx( final StmtContext<?, ?, ?> context, final Class<N> namespace, final NamespaceKeyCriterion<K> criterion, final ModelProcessingPhase phase) { return requiresCtxImpl(context, namespace, criterion, phase); }
@Override public <E extends EffectiveStatement<?, ?>> Prerequisite<E> requiresEffective( final StmtContext<?, ?, ? extends E> stmt) { return requiresCtxImpl(stmt, EFFECTIVE_MODEL).transform(StmtContext::buildEffective); }
@Override public <D extends DeclaredStatement<?>> Prerequisite<D> requiresDeclared( final StmtContext<?, ? extends D, ?> context) { return requiresCtxImpl(context, FULL_DECLARATION).transform(StmtContext::buildDeclared); }
@Override public <K, D extends DeclaredStatement<?>, N extends StatementNamespace<K, ? extends D, ?>> Prerequisite<D> requiresDeclared(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) { final AbstractPrerequisite<StmtContext<?, D, ?>> rawContext = requiresCtxImpl(context, namespace, key, FULL_DECLARATION); return rawContext.transform(StmtContext::buildDeclared); }
@Override public <K, E extends EffectiveStatement<?, ?>, N extends StatementNamespace<K, ?, ? extends E>> Prerequisite<E> requiresEffective(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) { final AbstractPrerequisite<StmtContext<?, ?, E>> rawContext = requiresCtxImpl(context, namespace, key, EFFECTIVE_MODEL); return rawContext.transform(StmtContext::buildEffective); }
@Override public <K, E extends EffectiveStatement<?, ?>, N extends StatementNamespace<K, ?, ? extends E>> AbstractPrerequisite<StmtContext<?, ?, E>> requiresEffectiveCtx(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) { return requiresCtxImpl(contextImpl(context), namespace, key, EFFECTIVE_MODEL); }