override fun beforeReturn()

in src/jvm/main/org/jetbrains/kotlinx/lincheck/trace/TraceFlattenPolicies.kt [59:89]


    override fun beforeReturn(currentNode: TraceNode, descendants: List<TraceNode>): List<TraceNode> {
        when (currentNode) {
            is CallNode -> {
                if (!currentNode.isRootCall) return descendants
                val returnedValue = currentNode.tracePoint.returnedValue

                // Dont show empty hung actor
                if (descendants.size == 1 &&
                    descendants.contains(currentNode) &&
                    returnedValue is ReturnedValueResult.NoValue &&
                    currentNode.tracePoint.isActor) return emptyList()
                
                // Check if result node should be added
                if (descendants.size > 1 && returnedValue.showAtMethodCallEnd) {
                    val nSiblings = currentNode.parent?.children?.size ?: 0
                    if (nSiblings <= 1) {
                        return descendants + ResultNode(
                            currentNode.callDepth + 1,
                            returnedValue,
                            currentNode.returnEventNumber,
                            currentNode.tracePoint
                        )
                    }
                }

                return descendants
            }

            else -> return descendants
        }
    }