@Override
    public boolean inserta(String sufix, int indexSequencia) throws StackOverflowError {
        if (value == sufix.charAt(0)) {
            if (bits[indexSequencia] == null) {
                bits[indexSequencia] = new ArrayList<Integer>();
            }
            bits[indexSequencia].add(sufix.length() - 1);
            Alfabet alfabet = Alfabet.getInstance();
            if (value != alfabet.getFiSequencia() && !mig()) {
                fillCentral = creaFills(sufix.substring(1), indexSequencia);
                return true;
            } else if (value != alfabet.getFiSequencia() && mig()) {
                return fillCentral.inserta(sufix.substring(1), indexSequencia);
            }
        } else if (sufix.charAt(0) < value) {
            if (germaMenor == null) { //crea germa Menor con valor sufix e hijos
                germaMenor = creaFills(sufix, indexSequencia);
                return true;
            } else {
                return germaMenor.inserta(sufix, indexSequencia);
            }
        } else {
            if (germaMajor == null) { // crea germa Major con valor sufix e hijos
                germaMajor = creaFills(sufix, indexSequencia);
                return true;
            } else {
                return germaMajor.inserta(sufix, indexSequencia);
            }
        }
        return false;
    }