     }
     
     @discardableResult public func play() -> Bool {
+        queueJustInitialized = false
         MusicPlayer.player.play()
         
         // NOTE: Attempting to call play() immediately before or after

/// after initialization to see what is available.
public struct AudioPlayerFactory {
    ///Create an appropriate audio player based on the media item
    public static func createPlayer(for mediaItem: MPMediaItem) -> AudioPlayer {
        if mediaItem.assetURL != nil {
            return FXAudioPlayerEngine(mediaItem: mediaItem)
        }
        else {
            return MusicPlayer(mediaItem: mediaItem)
        }
    }
    
    public static func createPlayer(for asset: AVURLAsset) -> AudioPlayer {
        return FXAudioPlayerEngine(asset: asset)
    }
}


    
    var asset: AVURLAsset? { get set }
    
    var assetURL: URL? { get }

    var isPrepared: Bool { get }
    
    var playbackPosition: TimeInterval { get set }
    
    var playbackProgress: Float { get set }

    ///Playback duration adjusted for playbackRate
    var playbackDuration: TimeInterval { get }
