ParsedStrategy { public Stream<LoanDescriptor> getApplicableLoans(final Stream<LoanDescriptor> l, final PortfolioOverview portfolioOverview) { return getApplicable(l.parallel() .map(d -> Wrapper.wrap(d, portfolioOverview)), "Loan"); } ParsedStrategy(final DefaultPortfolio portfolio);   ParsedStrategy(final DefaultValues values);   ParsedStrategy(final DefaultPortfolio portfolio, final Collection<MarketplaceFilter> filters);   ParsedStrategy(final DefaultValues values, final Collection<MarketplaceFilter> filters);   ParsedStrategy(final DefaultValues values, final FilterSupplier filters);   ParsedStrategy(final DefaultValues defaults, final Collection<PortfolioShare> portfolio,
            final Map<Rating, MoneyRange> investmentSizes, final Map<Rating, MoneyRange> purchaseSizes);  ParsedStrategy(final DefaultValues defaults, final Collection<PortfolioShare> portfolio,
            final Map<Rating, MoneyRange> investmentSizes,
            final Map<Rating, MoneyRange> purchaseSizes, final FilterSupplier filters); int getMinimumInvestmentShareInPercent(); int getMaximumInvestmentShareInPercent(); Money getMaximumInvestmentSize(); Optional<RoboZonkyVersion> getMinimumVersion(); void setMinimumVersion(final RoboZonkyVersion minimumVersion); Ratio getPermittedShare(final Rating rating); Money getMinimumInvestmentSize(final Rating rating); Money getMaximumInvestmentSize(final Rating rating); Money getMinimumPurchaseSize(final Rating rating); Money getMaximumPurchaseSize(final Rating rating); Stream<LoanDescriptor> getApplicableLoans(final Stream<LoanDescriptor> l,
            final PortfolioOverview portfolioOverview); Stream<ReservationDescriptor> getApplicableReservations(final Stream<ReservationDescriptor> r,
            final PortfolioOverview portfolioOverview); Stream<ParticipationDescriptor> getApplicableParticipations(final Stream<ParticipationDescriptor> p,
            final PortfolioOverview portfolioOverview); boolean isPurchasingEnabled(); boolean isInvestingEnabled(); Optional<ReservationMode> getReservationMode(); Optional<SellingMode> getSellingMode(); Stream<InvestmentDescriptor> getMatchingSellFilters(final Stream<InvestmentDescriptor> i,
            final PortfolioOverview portfolioOverview); Stream<InvestmentDescriptor> getMatchingPrimaryMarketplaceFilters(final Stream<InvestmentDescriptor> i,
            final PortfolioOverview portfolioOverview); @Override String toString();  }
@Test void conditions() { final DefaultPortfolio portfolio = DefaultPortfolio.PROGRESSIVE; final ParsedStrategy strategy = new ParsedStrategy(portfolio); assertThat(strategy.getApplicableLoans(Stream.empty(), FOLIO)).isEmpty(); final LoanImpl loan = ParsedStrategyTest.mockLoan(2); final LoanDescriptor ld = new LoanDescriptor(loan); assertThat(strategy.getApplicableLoans(Stream.of(ld), FOLIO)).contains(ld); final MarketplaceFilter f = mock(MarketplaceFilter.class); when(f.test(ArgumentMatchers.eq(Wrapper.wrap(ld, FOLIO)))).thenReturn(true); final ParsedStrategy strategy2 = new ParsedStrategy(portfolio, Collections.singleton(f)); assertThat(strategy2.getApplicableLoans(Stream.of(ld), FOLIO)).isEmpty(); }