private Slot<ForeignKey> addForeignKey(FilterLevel filterLevel, JoinNode node) {
Slot<ForeignKey> foreignKey = getTable(node.getLeftFormId()).addForeignKey(node.getReferenceField(), node.getRightFormId());
Slot<TableFilter> filter = getFilter(filterLevel, node.getLeftFormId());
return new MemoizedSlot2<>(foreignKey, filter, new BiFunction<ForeignKey, TableFilter, ForeignKey>() {
@Override
public ForeignKey apply(ForeignKey foreignKey, TableFilter filter) {
return filter.apply(foreignKey);
}
});
}