     /// The internal AVAudioUnit, which is a subclass of AVAudioNode with more capabilities
     open var avAudioUnit: AVAudioUnit? {
         didSet {
-            if let akAudioUnit = avAudioUnit?.auAudioUnit as? AKAudioUnitBase {
+            guard let avAudioUnit = avAudioUnit else { return }
+            if let akAudioUnit = avAudioUnit.auAudioUnit as? AKAudioUnitBase {
                 let mirror = Mirror(reflecting: self)
 
                 for child in mirror.children {

                        let name = String(label.dropFirst())
                        param.projectedValue.associate(with: akAudioUnit,
                                                       identifier: name)
                    }
                }
            }

    }

    // MARK: Lifecycle

    public func set(avAudioUnit: AVAudioUnit) {
        self.avAudioUnit = avAudioUnit
    }

    /// This function should be called from AKNode subclasses as soon as a valid AU is obtained
    public func associate(with au: AKAudioUnitBase, identifier: String) {
