.append(refkey.getTableName())
.append(table.getName())
    protected Event generateSinglePropertyAdd(ObjectType type, Property prop) {        StringBuffer sb = new StringBuffer();        List path = prop.getJoinPath().getPath();        if (path.size() > 2) {            s_log.warn("generateSinglePropertyAdd: " + prop.getName() +                       " has a join path longer than 2");            return null;        }        if (path.size() == 1) {            Column from = ((JoinElement)path.get(0)).getFrom();            Column refkey = type.getColumn();            Property typekey = Utilities.getKeyProperty((ObjectType)prop.getType());            if ((typekey == null) ||                (refkey == null) ||                (Utilities.getKeyProperty(type) == null)) {                s_log.warn("generateSinglePropertyAdd: " +                           type.getName() + "." + prop.getName() +                           "\ntypekey: " + typekey +                           "\ntype: " + prop.getType().getName() +                           "\nrefkey: " + refkey +                           "\nUtilities.getKeyProperty(type): " +                           Utilities.getKeyProperty(type));                return null;            }            if (!refkey.getTableName().equals(from.getTableName())) {                s_log.warn("generateSinglePropertyAdd: JoinPath for " +                           prop.getName() + " in " + type.getQualifiedName() +                           " does not start in the primary table.");                return null;            }            sb.append("update ")                .append(from.getTableName())                .append("\nset ")                .append(from.getColumnName())                .append(" = :")                .append(prop.getName())                .append(".")                .append(typekey.getName())                .append("\nwhere ")                .append(refkey.getTableName())                .append(".")                .append(refkey.getColumnName())                .append(" = :")                .append(Utilities.getKeyProperty(type).getName());        } else {            Column type1Ref = ((JoinElement)path.get(0)).getTo();            Column type2Ref = ((JoinElement)path.get(1)).getFrom();            Property type1Key = Utilities.getKeyProperty(type);            Property type2Key =                Utilities.getKeyProperty((ObjectType)prop.getType());            if ((type1Key == null) || (type2Key == null)) {                s_log.warn("generateSinglePropertyAdd: no key property " +                           "defined for either " + type.getName() + " or " +                           prop.getType().getName());                return null;            }            if (!type1Ref.getTableName().equals(type2Ref.getTableName())) {                s_log.warn("generateSinglePropertyAdd: JoinPath for " +                           prop.getName() + " is not continuous.");                return null;            }            sb.append("insert into ")                .append(type1Ref.getTableName())                .append(" (\n")                .append(type1Ref.getColumnName())                .append(", ")                .append(type2Ref.getColumnName())                .append(") values (\n:")                .append(type1Key.getName())                .append(", :")                .append(prop.getName())                .append(".")                .append(type2Key.getName())                .append(")");        }        Event event = new Event();        event.setLineInfo(prop);        Operation op = new Operation(sb.toString());        op.setLineInfo(prop);        event.addOperation(op);        return event;    }