docs: private IndirectCosts getIndirectCosts(BudgetPeriodDto periodInfo) {
          IndirectCosts indirectCosts = null;
          if (periodInfo != null && periodInfo.getIndirectCosts() != null
                  && periodInfo.getIndirectCosts().getIndirectCostDetails() != null) {
  
              int IndirectCostCount = 0;
              List<IndirectCosts.IndirectCost> indirectCostList = new ArrayList<>();
              for (IndirectCostDetailsDto indirectCostDetails : periodInfo.getIndirectCosts().getIndirectCostDetails()) {
                  IndirectCosts.IndirectCost indirectCost = IndirectCosts.IndirectCost.Factory.newInstance();
                  indirectCost.setCostType(indirectCostDetails.getCostType());
                  if (indirectCostDetails.getBase() != null) {
                      indirectCost.setBase(indirectCostDetails.getBase().bigDecimalValue());
                  }
                  if (indirectCostDetails.getRate() != null) {
                      indirectCost.setRate(indirectCostDetails.getRate().bigDecimalValue());
                  }
                  TotalDataType total = TotalDataType.Factory.newInstance();
                  if (indirectCostDetails.getFunds() != null) {
                      total.setFederal(indirectCostDetails.getFunds().bigDecimalValue());
                  }
                  if (indirectCostDetails.getCostSharing() != null) {
                      total.setNonFederal(indirectCostDetails.getCostSharing().bigDecimalValue());
                      if (indirectCostDetails.getFunds() != null) {
                          total.setTotalFedNonFed(indirectCostDetails.getFunds().add(indirectCostDetails.getCostSharing())
                                  .bigDecimalValue());
                      }
                      else {
                          total.setTotalFedNonFed(indirectCostDetails.getCostSharing().bigDecimalValue());
                      }
                  }
                  indirectCost.setFundRequested(total);
                  indirectCostList.add(indirectCost);
                  IndirectCostCount++;
                  if (IndirectCostCount == ARRAY_LIMIT_IN_SCHEMA) {
                      LOG.warn("Stopping iteration over indirect cost details because array limit in schema is only 4");
                      break;
                  }
              }
              if (IndirectCostCount > 0) {
                  indirectCosts = IndirectCosts.Factory.newInstance();
                  IndirectCosts.IndirectCost indirectCostArray[] = new IndirectCosts.IndirectCost[0];
                  indirectCosts.setIndirectCostArray(indirectCostList.toArray(indirectCostArray));
                  SummaryDataType summary = SummaryDataType.Factory.newInstance();
                  if (periodInfo.getIndirectCosts().getTotalIndirectCosts() != null) {
                      summary.setFederalSummary(periodInfo.getIndirectCosts().getTotalIndirectCosts().bigDecimalValue());
                  }
                  if (periodInfo.getIndirectCosts().getTotalIndirectCostSharing() != null) {
                      summary.setNonFederalSummary(periodInfo.getIndirectCosts().getTotalIndirectCostSharing().bigDecimalValue());
                      if (periodInfo.getIndirectCosts().getTotalIndirectCosts() != null) {
                          summary.setTotalFedNonFedSummary(periodInfo.getIndirectCosts().getTotalIndirectCosts().add(
                                  periodInfo.getIndirectCosts().getTotalIndirectCostSharing()).bigDecimalValue());
                      }
                      else {
                          summary.setTotalFedNonFedSummary(periodInfo.getIndirectCosts().getTotalIndirectCostSharing()
                                  .bigDecimalValue());
                      }
                  }
                  indirectCosts.setTotalIndirectCosts(summary);
              }
          }
          return indirectCosts;
      }