Null is never passed to this method. This should be tested.
Or could we just eliminate the check; what happens if null is passed? Write a couple of tests and find out:
    public void testStringValueOfNull() {
        assertEquals("", StringFunction.evaluate(null, null));
    }
    
    public void testStringValueOfNullWithNonNullNavigator() {
        assertEquals("", StringFunction.evaluate(null, new DocumentNavigator()));
    }
Which objects are frequently passed to this method, and could those be tested for first?