Property prop = m_query.getSignature().getProperty(path); if (prop == null) { return false; } else if (prop.getType().isKeyed() && prop.isNullable()) { return true;
if (m_anal.isDuplicate(path)) { Path canon = m_anal.getCanonical(path); if (!isOuter(canon)) { return false; } }  Signature sig = m_query.getSignature(); if (sig.isParameter(path)) { return false; } else if (sig.isSource(path)) { return false;
    private boolean isOuter(Path path) {        if (path == null) {            return false;        }        Property prop = m_query.getSignature().getProperty(path);	if (prop == null) {	    return false;	} else if (prop.getType().isKeyed() && prop.isNullable()) {            return true;        } else {            return isOuter(path.getParent());        }    }