class AgendaItemBo implements AgendaItemDefinitionContract, Versioned, Serializable {

    public static AgendaItemBo from(AgendaItemDefinition im) {
        if (im == null) {
            return null;
        }

        AgendaItemBo bo = new AgendaItemBo();
        bo.id = im.getId();
        bo.agendaId = im.getAgendaId();
        bo.subAgendaId = im.getSubAgendaId();
        bo.whenTrueId = im.getWhenTrueId();
        bo.whenFalseId = im.getWhenFalseId();
        bo.alwaysId = im.getAlwaysId();
        bo.versionNumber = im.getVersionNumber();
        bo.rule = RuleBo.from(im.getRule());
        bo.whenTrue = AgendaItemBo.from(im.getWhenTrue());
        bo.whenFalse = AgendaItemBo.from(im.getWhenFalse());
        bo.always = AgendaItemBo.from(im.getAlways());

        return bo;
    }

}