def _parse_postconditions()

in sapp/pipeline/mariana_trench_parser.py [0:0]


    def _parse_postconditions(self, model: Dict[str, Any]) -> Iterable[Postcondition]:
        caller = Method.from_json(model["method"])
        caller_position = Position.from_json(model["position"], caller)

        for generation in model.get("generations", []):
            generations = Parser._normalize_frame(generation, caller)
            for generation in generations:
                yield Postcondition(
                    caller=Call(
                        method=caller,
                        port=Port.from_json(generation["caller_port"], "source"),
                        position=caller_position,
                    ),
                    callee=Call.from_json(
                        method=_get_frame_callee(generation),
                        port=generation["callee_port"],
                        position=generation.get("call_position"),
                        default_position=caller_position,
                        leaf_kind="source",
                    ),
                    kind=generation["kind"],
                    distance=generation.get("distance", 0),
                    local_positions=LocalPositions.from_json(
                        generation.get("local_positions", []), caller
                    ),
                    features=Features.from_json(generation.get("local_features", {})),
                )