node {
void evaluate(Context ctx) {
bool oldState = getValue<output_Q>(ctx);
bool newState = oldState;
bool C= isInputDirty<input_C>(ctx);
bool D= getValue<input_D>(ctx);
if (C && D) {
newState= true;
} else if (C && !D) {
newState= false;
} else if (!C && !D) {
newState=oldState;
}
if (newState == oldState)
return;
bool Q_ = !newState;
emitValue<output_Q>(ctx, newState);
emitValue<output_Q_>(ctx, Q_);
}
}