             source.attributedText = nil
         }
         if let destination = overridingDetailTextLabel {
-            if let source = inheritedDetailTextLabel
+            if let source = superDetailTextLabel
             {
                 if !["Detail", "Subtitle"].contains(source.text) {
                     destination.copyNonDefaultProperties(from: source)

    
    private var isFinishedPrepare = false
    
    private var isLoadingFromNib: Bool {
        return type(of: self).isLoadingFromNib
    }
    
    // Subviews in which UITableViewCell moves and sets properties. prepareForInterfaceBuilder() later copies those properties into our subviews and dump these subviews. This strategey prevents UITableViewCell from moving the subviews out of our nested layout.
    private let dumpTextLabel = UILabel()
    private let dumpDetailTextLabel = UILabel()
    private let dumpImageView = UIImageView()
    
    @IBOutlet open override var textLabel: UILabel? {
        get {
            return isFinishedPrepare

        IBLog.write("offsetSubviewFramesIfNeeded() {", indent: 1)
        offsetCount += 1
        IBLog.write("offsetCount = \(offsetCount)")
        if offsetCount == changeFrameOffsetCount {
            [textLabel, detailTextLabel, imageView].compactMap { $0 }.forEach { subview in
                let converted = subview.convert(CGPoint.zero, to: self)
                if converted.x > 0
                    && converted.y > 0
                {
                    IBLog.write("subview: \(subview.shortDescription) {", indent: 1)
                    IBLog.write("old origin: \(subview.frame.origin)")
                    subview.frame.origin = converted
                    IBLog.write("new origin: \(subview.frame.origin)")
                    IBLog.write("}", indent: -1)
                }
            }
            isOffsetSubviewFramesFinished = true
        }
        IBLog.write("}", indent: -1)
    }
    
    #endif // TARGET_INTERFACE_BUILDER
    
