anchor.diff:  import 'package:polaris/platform/api.dart';
   import 'package:polaris/platform/dto.dart' as dto;
   import 'package:polaris/ui/collection/album_details.dart';
  +import 'package:polaris/ui/collection/album_grid.dart';
   import 'package:polaris/ui/utils/format.dart';
   import 'package:polaris/ui/utils/thumbnail.dart';
   
  
positive.code:     });
    }
  
    @override
    Widget build(BuildContext context) {
      if (_files == null) {
        return Center(child: CircularProgressIndicator());
      }
      // TODO handle zero files
      return ListView.builder(
        physics: BouncingScrollPhysics(),
        itemCount: _files.length,
        itemBuilder: (context, index) {
          final file = _files[index];
          if (file.isDirectory()) {
            final directory = file.asDirectory();
            return Directory(directory, onTap: () => widget.onDirectoryTapped(directory));
          } else {
            assert(file.isSong());
            return Song(file.asSong());
          }
        },
      );
    }
  }
  
  
negative.code:   bool get wantKeepAlive => true;
  }
  
  enum ViewMode {
    explorer,
    discography,
  }
  
  class BrowserLocation extends StatefulWidget {
    final String location;
    final void Function(dto.Directory) onDirectoryTapped;
  