anchor.diff:      String projectDescription,
       String androidLanguage,
       String iosLanguage,
  -    String dirPath,
       String flutterRoot,
       bool renderDriverTest: false,
       bool withPluginHook: false,
  
positive.code:     );
  
      printStatus('Creating project ${fs.path.relative(dirPath)}...');
      int generatedCount = 0;
      if (generatePackage) {
        final String description = argResults.wasParsed('description')
            ? argResults['description']
            : 'A new flutter package project.';
        templateContext['description'] = description;
        generatedCount += _renderTemplate('package', dirPath, templateContext);
  
        if (argResults['pub'])
          await pubGet(
            context: PubContext.createPackage,
            directory: dirPath,
            offline: argResults['offline'],
          );
  
        final String relativePath = fs.path.relative(dirPath);
        printStatus('Wrote $generatedCount files.');
        printStatus('');
        printStatus('Your package code is in lib/$projectName.dart in the $relativePath directory.');
        return;
      }
  
      String appPath = dirPath;
      if (generatePlugin) {
        final String description = argResults.wasParsed('description')
            ? argResults['description']
            : 'A new flutter plugin project.';
        templateContext['description'] = description;
        generatedCount += _renderTemplate('plugin', dirPath, templateContext);
  
        if (argResults['pub'])
          await pubGet(
            context: PubContext.createPlugin,
            directory: dirPath,
            offline: argResults['offline'],
          );
  
        if (android_sdk.androidSdk != null)
          gradle.updateLocalProperties(projectPath: dirPath);
  
        appPath = fs.path.join(dirPath, 'example');
        final String androidPluginIdentifier = templateContext['androidIdentifier'];
        final String exampleProjectName = projectName + '_example';
        templateContext['projectName'] = exampleProjectName;
        templateContext['androidIdentifier'] = _createAndroidIdentifier(organization, exampleProjectName);
        templateContext['iosIdentifier'] = _createUTIIdentifier(organization, exampleProjectName);
        templateContext['description'] = 'Demonstrates how to use the $projectName plugin.';
        templateContext['pluginProjectName'] = projectName;
        templateContext['androidPluginIdentifier'] = androidPluginIdentifier;
      }
  
      generatedCount += _renderTemplate('create', appPath, templateContext);
      generatedCount += _injectGradleWrapper(appPath);
      if (argResults['with-driver-test']) {
        final String testPath = fs.path.join(appPath, 'test_driver');
        generatedCount += _renderTemplate('driver', testPath, templateContext);
      }
  
      printStatus('Wrote $generatedCount files.');
      printStatus('');
  
      if (argResults['pub']) {
        await pubGet(context: PubContext.create, directory: appPath, offline: argResults['offline']);
        new FlutterProject(fs.directory(appPath)).ensureReadyForPlatformSpecificTooling();
  
negative.code:       organization: organization,
        projectName: projectName,
        projectDescription: argResults['description'],
        flutterRoot: flutterRoot,
        renderDriverTest: argResults['with-driver-test'],
        withPluginHook: generatePlugin,
  