return fk(new Column[] {from}, uk);
if (fk != null) { if (uk.equals(fk.getUniqueKey())) { return fk; } else { Node prev = (Node) m_fkNds.get(fk); m_errors.fatal (fromnd, "foreign key incompatible with previous definition: " + prev.getLocation()); return null; } }  fk = fk(new Column[] {from}, uk); m_fkNds.put(fk, fromnd);  return fk;
    private ForeignKey fk(JoinNd jn, boolean forward) {        ColumnNd fromnd;        ColumnNd tond;        if (forward) {            fromnd = jn.getFrom();            tond = jn.getTo();        } else {            fromnd = jn.getTo();            tond = jn.getFrom();        }        Column from = lookup(fromnd);        Column to = lookup(tond);        ForeignKey fk = from.getTable().getForeignKey(new Column[] {from});        if (fk != null) {            return fk;        }        UniqueKey uk = to.getTable().getUniqueKey(new Column[] {to});        if (uk == null) {            m_errors.warn(tond, "not a unique key");            return null;        }	return fk(new Column[] {from}, uk);    }