public Object evaluateVariableNavigation(String with) {
        with = ScriptLexicalAnalyzer.preprocessNavigationExpression(with);
        final int first = with.indexOf('.');
        if ( -1 >= first ) {
            return getVariable(with);
        } else {
            final String key = with.substring(0, first);
            final Object variableValue = getVariable(key);
            if ( null == variableValue ) {
                throw new NullPointerException("Variable: " + key + " is NULL or Undefined.");
            }
            return ScriptLexicalAnalyzer.evaluateVariableNavigation(variableValue, with.substring(first + 1));
        }
    }