anchor.diff:    var lines = await (new File('$repository/dart.rb')).readAsLines();
   
     for (var channel in CHANNELS) {
  -    final regExp = new RegExp('channels/$channel/release/(\\d*)/sdk');
  +    /// This RegExp between release/ and /sdk matches
  +    /// * 1 digit followed by
  +    /// * Any number of letters, numbers, dashes and dots
  +    /// This covers both numeric- and version-formatted revisions
  +    ///
  +    /// Note: all of the regexp escape slashes `\` are double-escaped within the
  +    /// Dart string
  +    final regExp =
  +        new RegExp('channels/$channel/release/(\\d[\\w\\d\\-\\.]*)/sdk');
  +
       revisions[channel] =
           regExp.firstMatch(lines.firstWhere(regExp.hasMatch)).group(1);
     }
  
positive.code:   }
  }
  
  Future<String> getVersion(String channel, int revision) async {
    var client = new http.Client();
    try {
      var api = new storage.StorageApi(client);
  
negative.code:   return Future.wait(waitOn);
  }
  
  Future writeHomebrewInfo(String channel, String revision) async {
    var revisions = {};
    var hashes = {};
  
  