anchor.diff:      this.volume,
       this.pitch,
       this.pan,
  -    this.callback
  +    this.onSoundComplete
     );
   
     // TODO: Make these properties work
  
positive.code: // TODO: The sound effects should probably use Android's SoundPool instead of
  // MediaPlayer as it is more efficient and flexible for playing back sound effects
  
  typedef void SoundCompleteCallback();
  
  class SoundEffect {
    SoundEffect(this._url);
  
negative.code: 
    // TODO: Implement completion callback. On completion, sounds should
    // also be removed from the list of playing sounds.
    SoundEffectStreamCallback onSoundComplete;
  
    MediaPlayerProxy _player;
  }
  
  SoundEffectPlayer _sharedSoundEffectPlayer;
  
  class SoundEffectPlayer {
  
    static SoundEffectPlayer sharedInstance() {
      if (_sharedSoundEffectPlayer == null) {
        _sharedSoundEffectPlayer = new SoundEffectPlayer();
      }
      return _sharedSoundEffectPlayer;
    }
  
    SoundEffectPlayer() {
  