public void execute() {
        if (!pins[1].value && lastClock) {
            boolean q = pins[3].value;
            if (pins[0].value) {
                if (pins[2].value) {
                    q = !q;
                } else {
                    q = true;
                }
            } else if (pins[2].value) {
                q = false;
            }
            pins[3].value = q;
            pins[4].value = !q;
        }
        lastClock = pins[1].value;

        if (hasReset()) {
            if (pins[5].value) {
                pins[3].value = false;
                pins[4].value = true;
            }
        }
    }