public StateChangeInfo toDto() {
    StateChangeInfo info = new StateChangeInfo();
    info.setId(getId());
    info.setFromStateKey(getFromStateKey());
    info.setToStateKey(getToStateKey());
    info.setEffectiveDate(getEffectiveDate());
    info.setExpirationDate(getExpirationDate());
    info.setStateKey(getStateKey());
    info.setTypeKey(getTypeKey());
    info.setMeta(super.toDTO());
    info.setAttributes(TransformUtility.toAttributeInfoList(this));

    info.getStateConstraintIds().clear();
    if (stateConstraintIds != null) {
      info.getStateConstraintIds().addAll(stateConstraintIds);
    }

    info.getStatePropagationIds().clear();
    if (statePropagationIds != null) {
      info.getStatePropagationIds().addAll(statePropagationIds);
    }

    return info;
  }