anchor.diff:  
     @override
     Widget build(BuildContext context) {
  -    super.build(context);
       if (_files == null) {
         return Center(child: CircularProgressIndicator());
       }
  
positive.code:         final file = _files[index];
          if (file.isDirectory()) {
            final directory = file.asDirectory();
            return Directory(directory, onTap: () => _browseTo(directory.path));
          } else {
            assert(file.isSong());
            return Song(file.asSong());
  
negative.code: }
  
  class _BrowserState extends State<Browser> with AutomaticKeepAliveClientMixin {
    List<String> _locations = [''];
    final _navigatorKey = GlobalKey<NavigatorState>();
  
    @override
    Widget build(BuildContext context) {
      super.build(context);
      return Navigator(
        key: _navigatorKey,
        pages: _locations.map((location) {
          return MaterialPage(child: BrowserLocation(location, _navigateToChild));
        }).toList(),
        onPopPage: (route, result) {
          return route.didPop(result);
        },
      );
    }
  
    _navigateToChild(dto.Directory directory) {
      final newLocations = List<String>.from(_locations);
      newLocations.add(directory.path);
      setState(() {
        _locations = newLocations;
      });
    }
  
    _navigateToParent() {
      final newLocations = List<String>.from(_locations);
      newLocations.removeLast();
      setState(() {
        _locations = newLocations;
      });
    }
  
    @override
    bool get wantKeepAlive => true;
  }
  
  class BrowserLocation extends StatefulWidget {
    final String location;
    final void Function(dto.Directory) onDirectoryTapped;
  
    BrowserLocation(this.location, this.onDirectoryTapped, {Key key})
        : assert(location != null),
          assert(onDirectoryTapped != null),
          super(key: key);
  
    @override
    _BrowserLocationState createState() => _BrowserLocationState();
  }
  
  class _BrowserLocationState extends State<BrowserLocation> {
    List<dto.CollectionFile> _files;
  
    @override
    void initState() {
      super.initState();
      _browseTo(widget.location);
    }
  
    _browseTo(String path) async {
  