anchor.diff:      return getAppContainerFor(resource) != null;
     }
   
  -  Future updateManifest(chrome.DirectoryEntry dir) {
  +  Future<String> updateManifest(chrome.DirectoryEntry dir) {
       String id = chrome.runtime.id;
  +    String launchId;
   
       // Special logic for launching spark within spark.
       // TODO (grv) : Implement a better way of handling launch of spark from
  
positive.code:         // TODO: Delay a bit - there's a race condition.
          return new Future.delayed(new Duration(milliseconds: 100));
        }).then((_) {
          return _getAppId(launchContainer.name);
        }).then((String id) {
          if (id == null) {
            throw 'Unable to locate an application id.';
          } else if (!management.available) {
            throw 'The chrome.management API is not available.';
          } else {
            return management.launchApp(id);
          }
        });
      });
    }
  
    /**
  
negative.code:           String key = manifestDict['key'];
            if (id == SPARK_NIGHTLY_ID && key == SPARK_NIGHTLY_KEY) {
              manifestDict['key'] = SPARK_RELEASE_KEY;
              launchId = SPARK_RELEASE_ID;
            } else if (id == SPARK_RELEASE_ID && key == SPARK_RELEASE_KEY) {
              manifestDict['key'] = SPARK_NIGHTLY_KEY;
              launchId = SPARK_NIGHTLY_ID;
            } else {
              return new Future.value();
            }
            // This modifies the manifest file permanently.
            return entry.writeText(new JsonPrinter().print(manifestDict)).then(
                (_) {
              return new Future.value(launchId);
            });
          });
        });
      } else {
  