MethodYield { public abstract Stream<ProgramState> statesAfterInvocation(List<SymbolicValue> invocationArguments, List<Type> invocationTypes, ProgramState programState, Supplier<SymbolicValue> svSupplier); 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_creation_of_states() throws Exception { SymbolicExecutionVisitor sev = createSymbolicExecutionVisitor("src/test/files/se/XProcYields.java"); MethodBehavior mb = getMethodBehavior(sev, "foo"); ProgramState ps = ProgramState.EMPTY_STATE; SymbolicValue sv1 = new SymbolicValue(); SymbolicValue sv2 = new SymbolicValue(); SymbolicValue sv3 = new SymbolicValue(); Symbol sym = variable("myVar"); ps = ps.put(sym, sv1); MethodYield methodYield = mb.happyPathYields().findFirst().get(); Stream<ProgramState> generatedStatesFromFirstYield = methodYield.statesAfterInvocation(Lists.newArrayList(sv1, sv2), new ArrayList<>(), ps, () -> sv3); assertThat(generatedStatesFromFirstYield).hasSize(1); }