anchor.diff:      actionManager.registerAction(new FileOpenAction(this));
       actionManager.registerAction(new FileSaveAction(this));
       actionManager.registerAction(new FileExitAction(this));
  -    actionManager.registerAction(new CloseFileOrProjectAction(this));
  +    actionManager.registerAction(new FileOrProjectCloseAction(this));
       actionManager.registerAction(new FolderOpenAction(this));
       actionManager.registerAction(new FileRenameAction(
           this, getDialogElement('#renameDialog')));
  
positive.code:     }
  
      for (ws.Resource resource in resources) {
        if (resource is ws.File) {
          spark._closeOpenEditor(resource);
        } else if (resource is ws.Project) {
  
negative.code:   bool appliesTo(Object object) => _isSingleResource(object) && !_isTopLevel(object);
  }
  
  class FileOrProjectCloseAction extends SparkAction implements ContextAction {
    FileOrProjectCloseAction(Spark spark) : super(spark, "file-close", "Close");
  
    void _invoke([List<ws.Resource> resources]) {
      if (resources == null) {
  