cols[i] = block.getMapping(paths[i]); if (cols[i] == null) {
Path mapping = block.getMapping(paths[i]); if (mapping == null) {
    private boolean genPathRecursive(final Path path) {	// Make sure we don't generate stuff twice.        Path[] cols = getColumns(path);        if (cols != null) {            return true;        }	// Handle parameters        Parameter p = m_query.getSignature().getParameter(path);        if (p != null) {            setColumns(path, RDBMSEngine.getKeyPaths                       (p.getObjectType(), p.getPath()));            return true;        }	// Handle staticly mapped paths	Source src = getSource(path);	if (isStatic(src)) {	    SQLBlock block = getBlock(src);	    Path prefix = getPrefix(block);	    Path[] paths = RDBMSEngine.getKeyPaths		(m_query.getSignature().getType(path), Path.add(prefix, path));	    cols = new Path[paths.length];	    boolean failed = false;	    for (int i = 0; i < cols.length; i++) {		cols[i] = block.getMapping(paths[i]);		if (cols[i] == null) {		    failed = true;		    break;		}	    }	    if (!failed) {		setColumns(path, cols);		return true;	    }	}	if (path == null) {	    return false;	}        if (!genPathRecursive(path.getParent())) {	    return false;	}        final Property prop = m_query.getSignature().getProperty(path);        ObjectMap map = Root.getRoot().getObjectMap(prop.getContainer());        Mapping m = map.getMapping(Path.get(prop.getName()));        m.dispatch(new Mapping.Switch() {                public void onValue(Value m) {                    if (prop.isKeyProperty()) {                        Path[] keyCols = getColumns(path.getParent());                        List keys =                            prop.getContainer().getKeyProperties();                        setColumns(path, new Path[] {                            keyCols[keys.indexOf(prop)]                        });                    } else {                        Path alias = addJoin                            (path, m.getColumn().getTable().getPrimaryKey());                        setColumns(path, new Path[] {                            Path.add(alias, m.getColumn().getName())                        });                    }                }                public void onJoinTo(JoinTo m) {                    Path alias =			addJoin(path, m.getKey().getTable().getPrimaryKey());                    setColumns(path, getPaths(alias, m.getKey()));                }                public void onJoinFrom(JoinFrom m) {                    Path alias = addJoin(path, m.getKey());                    setColumns(path, getPaths                               (alias, m.getKey().getTable().getPrimaryKey()));                }                public void onJoinThrough(JoinThrough m) {                    Path alias = addJoin(path, m.getFrom());                    setColumns(path, getPaths(alias, m.getTo()));                }                public void onStatic(Static m) {                    throw new IllegalStateException                        ("no mapping for: " + m.getPath());                }            });	return true;    }