anchor.diff:      yamlFileData.replaceFirst(yamlPattern(currentVersion),
         yamlPattern(nextVersion));
     var newChangelogData =
  -    changelogData.replaceFirst(changelogPattern('Upcoming Version'),
  +    changelogData.replaceFirst(changelogPattern('unreleased'),
         changelogPattern(nextVersion));
   
     new File('package.json').writeAsStringSync(newPackageFileData);
  
positive.code:   var packageData = JSON.decode(packageFileData);
  
    var currentVersion = new Version.parse(packageData['version']);
    // TODO: have this match the parameter passed in on the command line
    var nextVersion = currentVersion.nextPatch;
  
    var jsonPattern         = (version) => '"version": "${version}"';
    var yamlPattern         = (version) => 'version: ${version}';
    var changelogPattern    = (version) => "# ${version}";
    // We do pattern matches to preserve the formatting in the existing files.
  
    var newPackageFileData =
      packageFileData.replaceFirst(jsonPattern(currentVersion),
  
negative.code: part of atom.grind;
  
  @Task('Publish a new major version of dartlang')
  publishMajor() => _publish('major');
  
  @Task('Publish a new minor version of dartlang')
  publishMinor() => _publish('minor');
  
  @Task('Publish a new patch version of dartlang')
  publishPatch() => _publish('patch');
  
  _publish(String publishType) {
    // Command line parsing (major, minor, patch) version update.
    if (publishType != 'major' && publishType != 'minor' && publishType != 'patch') {
      fail('Invalid publish type: ${publishType}');
    }
    // Comment out the if statements while developing this task.
    var diffResult = Process.runSync("git", ["diff", "--shortstat"]);
    if (diffResult.stdout.toString().isNotEmpty)
  