def METHOD_NAME(
    statistic_points: StatisticPointsContainer, model: ov.Model, graph: NNCFGraph
) -> StatisticPointsContainer:
    merged_statistic_points = StatisticPointsContainer()
    target_type_to_tensor_collector_map = defaultdict(lambda: defaultdict(list))
    for target_node_name, _statistic_points in statistic_points.data.items():
        for statistic_point in _statistic_points:
            target_point = statistic_point.target_point
            if target_point.type in [TargetType.PRE_LAYER_OPERATION, TargetType.OPERATION_WITH_WEIGHTS]:
                node = graph.get_node_by_name(target_node_name)
                target_input_edge = graph.get_input_edges(node)[target_point.port_id]
                target_type = TargetType.POST_LAYER_OPERATION
                _target_node_name = target_input_edge.from_node.node_name
                port_id = target_input_edge.output_port_id
            else:
                target_type = statistic_point.target_point.type
                _target_node_name = target_point.target_node_name
                port_id = target_point.port_id
            # TODO: Use common target point class instead of tuple
            key = (_target_node_name, target_type, port_id)
            for tensor_collectors in statistic_point.algorithm_to_tensor_collectors.values():
                target_type_to_tensor_collector_map[key]["collectors"].extend(tensor_collectors)
            target_type_to_tensor_collector_map[key]["target_point"].append(target_point)
    for merged_collectors_info in target_type_to_tensor_collector_map.values():
        target_point = merged_collectors_info["target_point"][0]
        collectors = merged_collectors_info["collectors"]
        merged_collector = MergedTensorCollector(collectors)
        stat_point = StatisticPoint(target_point, merged_collector, "Merged")
        merged_statistic_points.add_statistic_point(stat_point)
    return merged_statistic_points