public static Object evaluateVariableNavigation(Object variableInstance, String navigation) {
        /*
         * if (variableInstance instanceof SObject) { return
         * SfdcLexicalAnalyzer.evaluateSObjectProperty((SObject)
         * variableInstance, navigation); }
         */
        if ( 0 > navigation.indexOf('.') ) {
            return ClassUtils.getProperty(variableInstance, navigation);
        } else {
            final int first = navigation.indexOf('.');
            return evaluateVariableNavigation(ClassUtils.getProperty(variableInstance, navigation.substring(0, first)), navigation.substring(first + 1));
        }
    }