MethodYield { static Stream<Constraint> pmapToStream(@Nullable PMap<Class<? extends Constraint>, Constraint> pmap) { if(pmap == null) { return Stream.empty(); } Stream.Builder<Constraint> result = Stream.builder(); pmap.forEach((d, c) -> result.add(c)); return result.build(); } protected  MethodYield(MethodBehavior behavior); protected  MethodYield(ExplodedGraph.Node node, MethodBehavior behavior); abstract Stream<ProgramState> statesAfterInvocation(List<SymbolicValue> invocationArguments, List<Type> invocationTypes, ProgramState programState,
    Supplier<SymbolicValue> svSupplier); Stream<ProgramState> parametersAfterInvocation(List<SymbolicValue> invocationArguments, List<Type> invocationTypes, ProgramState programState); boolean generatedByCheck(SECheck check); MethodBehavior methodBehavior(); @Override abstract String toString(); @Override int hashCode(); @Override boolean equals(Object obj); Set<Flow> flow(List<Integer> parameterIndices, List<Class<? extends Constraint>> domains, int maxReturnedFlows);  }
@Test void test_pmapToStream() { assertThat(MethodYield.pmapToStream(null)).isEmpty(); PMap<Class<? extends Constraint>, Constraint> pmap = PCollections.emptyMap(); assertThat(MethodYield.pmapToStream(pmap)).isEmpty(); pmap = pmap.put(ObjectConstraint.class, ObjectConstraint.NOT_NULL); assertThat(MethodYield.pmapToStream(pmap)).containsOnly(ObjectConstraint.NOT_NULL); }