override fun afterReadField()

in src/jvm/main/org/jetbrains/kotlinx/lincheck/strategy/managed/ManagedStrategy.kt [1334:1367]


    override fun afterReadField(
        threadDescriptor: ThreadDescriptor,
        codeLocation: Int,
        obj: Any?,
        fieldId: Int,
        value: Any?
    ) = threadDescriptor.runInsideIgnoredSection {
        val eventId = getNextEventId()
        val threadId = threadScheduler.getCurrentThreadId()
        val fieldDescriptor = context.getFieldDescriptor(fieldId)
        if (fieldDescriptor.isStatic && value !== null && !value.isImmutable) {
            LincheckJavaAgent.ensureClassHierarchyIsTransformed(value.javaClass)
        }
        if (collectTrace) {
            val valueRepresentation = objectTracker.getObjectRepresentation(value)
            val typeRepresentation = objectFqTypeName(value)
            if (shouldTrackFieldAccess(obj, fieldDescriptor)) {
                val tracePoint = ReadTracePoint(
                    context = context,
                    eventId = eventId,
                    iThread = threadId,
                    actorId = currentActorId[threadId]!!,
                    ownerRepresentation = findOwnerName(obj, fieldDescriptor.className, codeLocation),
                    fieldName = fieldDescriptor.fieldName,
                    codeLocation = codeLocation,
                    isLocal = false,
                    valueRepresentation = valueRepresentation,
                    valueType = typeRepresentation,
                )
                traceCollector?.addTracePointInternal(tracePoint)
            }
        }
        loopDetector.afterRead(value)
    }