class SccProc extends AlgoBaseProc<SccAlgorithm, HugeLongArray, SccConfig> {

    @Procedure(value = "gds.alpha.scc.stream", mode = READ)
    @Description(DESCRIPTION)
    public Stream<SccAlgorithm.StreamResult> stream(
        @Name(value = "graphName") Object graphNameOrConfig,
        @Name(value = "configuration", defaultValue = "{}") Map<String, Object> configuration
    ) {
        ComputationResult<SccAlgorithm, HugeLongArray, SccConfig> computationResult = compute(graphNameOrConfig, configuration);

        AllocationTracker tracker = allocationTracker();
        Graph graph = computationResult.graph();
        HugeLongArray components = computationResult.result();

        if (graph.isEmpty()) {
            graph.release();
            return Stream.empty();
        }

        log.info("Scc: overall memory usage: %s", tracker.getUsageString());
        graph.release();

        return LongStream.range(0, graph.nodeCount())
                .filter(i -> components.get(i) != -1)
                .mapToObj(i -> new SccAlgorithm.StreamResult(graph.toOriginalNodeId(i), components.get(i)));
    }

}