docs: private Pair<Factor, Assignment> getRegressableFactorForFamily(BoostingFactorFamily family, VariableMatch match,
        List<Integer> conditionedVariables, MarginalSet marginals) {
      VariableNumMap marginalVars = match.getMatchedVariables().removeAll(conditionedVariables);
      VariableNumMap fixedVars = match.getMatchedVariables().intersection(conditionedVariables);
      Factor factorMarginal = marginals.getMarginal(marginalVars.getVariableNums())
          .relabelVariables(match.getMappingToTemplate());
  
      Assignment assignment = marginals.getConditionedValues().intersection(fixedVars)
          .mapVariables(match.getMappingToTemplate().getVariableIndexReplacementMap());
  
      VariableNumMap outerProductVars = family.getUnconditionalVariables().removeAll(factorMarginal.getVars());
      if (outerProductVars.size() > 0) {
        factorMarginal = factorMarginal.outerProduct(TableFactor.pointDistribution(outerProductVars,
            assignment.intersection(outerProductVars)));
        assignment = assignment.removeAll(outerProductVars.getVariableNumsArray());
      }
  
      return Pair.of(factorMarginal, assignment);
    }