anchor.diff:    final String key;
     final String curlPath;
     
  -  UrlShortener({this.url: "http://www.google.com", this.command: "shorten", this.key: null, this.curlPath: "curl"});
  +  UrlShortener({this.url: "http://www.google.com", this.command: "shorten", this.key: '', this.curlPath: "curl"});
     
  -  execute() {
  +  Future execute() {
       switch(command) {
         case SHORTEN:
           return shorten();
  
positive.code:   
    argParser.addOption('key', abbr: 'k',
        help: 'google api key', 
        defaultsTo: null);
    
    argParser.addOption('url', abbr: 'u',
        help: 'url',
        defaultsTo: "http://www.google.com");
    
    /* these are exclusive */
    argParser.addOption('type', abbr: 't',
        allowed: [UrlShortener.SHORTEN, UrlShortener.EXPAND, UrlShortener.ANALYTICS],
        help: "type of action to execute",
  
negative.code:   }
    
    Future shorten() {
      var keyParam = key.isEmpty ? "" : "?&key=$key";
      var args = ["$googUrl$keyParam", "-H", 'Content-Type: application/json',
                   "-d", JSON.stringify({"longUrl": url})];
      return executeCurl(args);
    }
    
    Future expand() {
      var keyParam = key.isEmpty ? "" : "&key=$key";
      var args = ["$googUrl?shortUrl=$url$keyParam"];
      return executeCurl(args);
    }
    
    Future analytics() {
      var keyParam = key.isEmpty ? "" : "&key=$key";
      var args = ["$googUrl?shortUrl=$url&projection=FULL$keyParam"];
      return executeCurl(args);
    }
  }
  