static Value determineTypedValue(final Token<?> valueToken, final String variableName) {
        Validate.notNull(valueToken);
        switch (valueToken.getType()) { // NOPMD
            case NULL:
                return Value.getNil();
            case BOOLEAN:
                if (((Token<Boolean>) valueToken).getValue()) {
                    return Value.getTrue();
                } else {
                    return Value.getFalse();
                }
            case FLOAT:
                return Value.valueOf(((Token<Float>) valueToken).getValue());
            case INTEGER:
                return Value.valueOf(((Token<Integer>) valueToken).getValue());
            case STRING:
                return Value.valueOf(((Token<String>) valueToken).getValue());
            default:
                throw new SyntaxException(String.format("Bad value '%s' assigned to varibale '%s'!",
                                                        valueToken.getValue(), variableName));
        }
    }