private void flip(final double ANGLE_STEP) {
        currentAngle += ANGLE_STEP;
        if (Double.compare(currentAngle, 180) >= 0) {
            currentAngle = 0;
            flapTextBack.setOpacity(0);
            flapTextFront.setOpacity(1);
            currentSelectionIndex++;
            if (currentSelectionIndex >= selectedSet.size()) {
                currentSelectionIndex = 0;
            }
            nextSelectionIndex = currentSelectionIndex + 1;
            if (nextSelectionIndex >= selectedSet.size()) {
                nextSelectionIndex = 0;
            }
            if (selectedSet.get(currentSelectionIndex).equals(getText())) {
                timer.stop();
                flipping = false;
                rotateFlap.setAngle(currentAngle);
            }
            refreshTextCtx();
        }
        if (currentAngle > 90) {
            flapTextFront.setOpacity(0);
            flapTextBack.setOpacity(1);
        }
        if (flipping) {
            rotateFlap.setAngle(currentAngle);
        }
    }