@Override public <C extends Mutable<?, ?, ?>, T extends C> Prerequisite<C> mutatesCtx(final T context, final ModelProcessingPhase phase) { return addMutation(new PhaseMutation<>(contextImpl(context), phase)); }
@Override public <N extends IdentifierNamespace<?, ?>> Prerequisite<Mutable<?, ?, ?>> mutatesNs( final Mutable<?, ?, ?> context, final Class<N> namespace) { return addMutation(new NamespaceMutation<>(contextImpl(context), namespace)); }
@Override public <K, E extends EffectiveStatement<?, ?>, N extends IdentifierNamespace<K, ? extends StmtContext<?, ?, ?>>> AbstractPrerequisite<Mutable<?, ?, E>> mutatesEffectiveCtxPath(final StmtContext<?, ?, ?> context, final Class<N> namespace, final Iterable<K> keys) { checkNotRegistered(); final PhaseModificationInNamespacePath<Mutable<?, ?, E>, K, N> ret = new PhaseModificationInNamespacePath<>( EFFECTIVE_MODEL, keys); addReq(ret); addMutation(ret); ret.hookOnto(context, namespace); return ret; }
@SuppressWarnings({ "rawtypes", "unchecked" }) private <K, C extends Mutable<?, ?, ?>, N extends IdentifierNamespace<K, ? extends StmtContext<?, ?, ?>>> AbstractPrerequisite<C> mutatesCtxImpl(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key, final ModelProcessingPhase phase) { checkNotRegistered(); final PhaseModificationInNamespace<C> mod = new PhaseModificationInNamespace<>(EFFECTIVE_MODEL); addReq(mod); addMutation(mod); contextImpl(context).onNamespaceItemAddedAction((Class) namespace, key, mod); return mod; }