public String trace(Case ambigousCase) {
        List<String> subContext = ambigousCase.tokens;
        String output = "";
        String ambigousElement = ambigousCase.getCurrentToken();

        String[] ambigousElements = ambigousElement.split("\t");
        String ambigousWord = ambigousElements[0];
        String[] ambigousTags =  ambigousElements[1].split(",");
        boolean isDone = false;
        for (List<Map.Entry<String, Premises>> tags : this.list) {
            if (this.isCompatible(ambigousTags, tags)) {
                Premises premises = (Premises) tags.get(0).getValue();
                for (Premises.Premise premise : premises.getList()) {
                    output = premise.trace(ambigousCase);
                    if(!("".equals(output))) {
                        ambigousCase.founded(premise);
                        isDone = true;
                        break;
                    }

                    if(!isDone && premise.grammar.equals("--")) {
                        	ambigousCase.founded(premise);
                        	output = premise.output;
                            isDone = true;
                            break;
                    }    
                }
            }

            if (isDone) {
                break;
            }
        }
		
		String word = ambigousCase.getCurrentToken().split("\t")[0];
        return isDone ? output : ambigousElements[1]; 
    }