public void calculateUnderwritingInfo(
      List<CededUnderwritingInfoPacket> cededUnderwritingInfos,
      List<UnderwritingInfoPacket> netUnderwritingInfos,
      double coveredByReinsurers,
      boolean fillNet) {
    if (isStartCoverPeriod) {
      initCededPremiumAllocation(cededClaims, grossUwInfos);
    }
    for (UnderwritingInfoPacket grossUnderwritingInfo : grossUwInfos) {
      double cededPremiumFixedShare =
          cededPremiumFixed * riPremiumSplit.getShare(grossUnderwritingInfo);
      cededPremiumFixedShare *= coveredByReinsurers;
      double cededPremiumVariable = 0;
      cededPremiumVariable *= coveredByReinsurers;
      double cededPremium =
          isStartCoverPeriod ? cededPremiumFixedShare + cededPremiumVariable : cededPremiumVariable;

      CededUnderwritingInfoPacket cededUnderwritingInfo =
          CededUnderwritingInfoPacket.deriveCededPacketForNonPropContract(
              grossUnderwritingInfo,
              contractMarker,
              -cededPremium,
              isStartCoverPeriod ? -cededPremiumFixedShare : 0,
              -cededPremiumVariable);
      UnderwritingInfoUtils.applyMarkers(grossUnderwritingInfo, cededUnderwritingInfo);
      cededUwInfos.add(cededUnderwritingInfo);
      cededUnderwritingInfos.add(cededUnderwritingInfo);
      if (fillNet && isStartCoverPeriod) {
        netUnderwritingInfos.add(grossUnderwritingInfo.getNet(cededUnderwritingInfo, false));
      }
    }
    isStartCoverPeriod = false;
  }
 public void initCededPremiumAllocation(
     List<ClaimCashflowPacket> cededClaims, List<UnderwritingInfoPacket> grossUnderwritingInfos) {
   riPremiumSplit.initSegmentShares(cededClaims, grossUnderwritingInfos);
 }