core/src/main/java/org/trimou/engine/context/DefaultExecutionContext.java
private Object resolveLeadingContextObject(String name, ValueWrapper value,
            AtomicReference<Hint> hintRef) {

        Object leading = resolveContextObject(name, value, hintRef);

        if (leading == null) {
            // Leading context object not found - try to resolve context
            // unrelated objects (JNDI lookup, CDI, etc.)
            Hint hint = hintRef != null ? hintRef.get() : null;
            if (hint != null) {
                leading = hint.resolve(null, name, value);
            }
            if (leading == null) {
                leading = resolve(null, name, value, hint == null
                        && hintRef != null);
            }
        }
        return leading;
    }
private Object resolveLeadingContextObject(String name, ValueWrapper value,
            AtomicReference<Hint> hintRef) {

        Object leading = resolveContextObject(name, value, hintRef);

        if (leading == null) {
            // Leading context object not found - try to resolve context
            // unrelated objects (JNDI lookup, CDI, etc.)
            Hint hint = hintRef != null ? hintRef.get() : null;
            if (hint != null) {
                leading = hint.resolve(null, name, value);
            }
            if (leading == null) {
                leading = resolve(null, name, value, hint == null
                        && hintRef != null);
            }
        }
        return leading;
    }
Resolve the leading context object (the first part of the key). E.g.
<code>foo</code> in <code>{{foo.bar.name}}</code> may identify a property
of some context object on the stack (passed data, section iteration,
nested context, ...), or some context and data unrelated object (e.g. CDI
bean).

@param name
@param value
The value wrapper - ResolutionContext
@param hintRef
@return the resolved leading context object
@see Hint