public void setRandomValidValue() throws NoMoreValuesException {
        if (this.size() == 1) {
            if (this.index_actual_argument == -1) {
                this.setStateIndex(0);
            } else {
                throw new NoMoreValuesException();
            }
        } else if (this.size() > 1) {

            if (debug>=3) {
                    String dmethod = Thread.currentThread().getStackTrace()[2].getMethodName();
                    String dclass = Thread.currentThread().getStackTrace()[2].getClassName();
                    System.out.println("---------------------------------------");
                    System.out.println("[class: "+dclass+" method: " + dmethod+ "] " + this + " actual state argument="+this.getStateIndex());
                    System.out.println("---------------------------------------");
            }

            Random rnd = new Random();

            int pos = rnd.nextInt(this.size());

            this.setStateIndex(pos);

            if (debug>=3) {
                    String dmethod = Thread.currentThread().getStackTrace()[2].getMethodName();
                    String dclass = Thread.currentThread().getStackTrace()[2].getClassName();
                    System.out.println("---------------------------------------");
                    System.out.println("[class: "+dclass+" method: " + dmethod+ "] " + this + " new state argument="+this.getStateIndex());
                    System.out.println("---------------------------------------");
            }

        }
    }