anchor.diff:    }
   }
   
  +/// The real AssetsAudioPlayer plugin (non-static)
   class AssetsAudioPlayerPlugin {
  +  /// The channel between the native and Dart
     final MethodChannel _channel = const MethodChannel('assets_audio_player');
   
  +  /// Then mediaplayer playing state (mutable)
     final BehaviorSubject<bool> _isPlaying =
         BehaviorSubject<bool>(seedValue: false);
  +    /// Then mediaplayer playing state (immutable)
     ValueObservable<bool> get isPlaying => _isPlaying.stream;
   
  +  /// Then mediaplayer playing audio (mutable)
     final BehaviorSubject<PlayingAudio> _current =
         BehaviorSubject<PlayingAudio>();
  +  /// Then mediaplayer playing audio (immutable)
     ValueObservable<PlayingAudio> get current => _current.stream;
   
  +  /// Called when the playing song finished (mutable)
     final BehaviorSubject<bool> _finished =
         BehaviorSubject<bool>(seedValue: false);
  +  /// Called when the playing song finished (immutable)
     ValueObservable<bool> get finished => _isPlaying.stream;
   
  +  /// Then current playing song position (in seconds) (mutable)
     final BehaviorSubject<Duration> _currentPosition =
         BehaviorSubject<Duration>(seedValue: const Duration());
  +  /// Then current playing song position (in seconds) (immutable)
     Stream<Duration> get currentPosition => _currentPosition.stream;
   
     /*
  
positive.code:     }
    }
  
    void play() {
      _channel.invokeMethod('play');
    }
  
    void pause() {
      _channel.invokeMethod('pause');
    }
  
    void seek(Duration to) {
      _channel.invokeMethod('seek', to.inSeconds.round());
    }
  
    void stop() {
      _channel.invokeMethod('stop');
    }
  
negative.code:     _current.close();
    }
  
    /// Private constructor
    AssetsAudioPlayerPlugin._() {
      _channel.setMethodCallHandler((MethodCall call) async {
        //print("received call ${call.method} with arguments ${call.arguments}");
  