anchor.diff:  @@if defined POWERSHELL_BAT_ARGS set POWERSHELL_BAT_ARGS=%POWERSHELL_BAT_ARGS:"=\"%
   @@powershell.exe -Command Invoke-Expression $('$args=@(^&{$args} %POWERSHELL_BAT_ARGS%);'+[String]::Join([char]10, $((Get-Content '%~f0') -notmatch '^^@@'))) & goto :EOF
   
  -
   $ProjectConsole = 1;
   $ProjectLibrary = 2;
   $ProjectUnitTest = 3;
   
  -Function Main($rootPath, $name)
  +Function Main($rootPath, $name, $company, $year)
   {
       $fullPath = "$rootPath\$name";
       $exists = Test-Path $fullPath;
  
positive.code:   </Analyzers>
  </StyleCopSettings>
  "@;
      $text = $text -Replace "`n", "`r`n";
      $text | Out-File $fullPath -Encoding "UTF8";
  }
  
  Function PrintUsage()
  {
      Write-Host "InitProjects.cmd <root-path> <project-name>";
      Write-Host "";
      Write-Host "Creates a simple project structure using the provided root path and project name.";
  }
  
  if ($args.Length -ne 2)
  {
      PrintUsage;
      Exit 1;
  }
  
  Main $args[0] $args[1];
  
negative.code:         "ProjectType" = $type;
          "ProjectReferences" = @();
          "FileToInclude" = $fileToInclude;
          "RootNamespace" = $rootNamespace;
      };
  
      return New-Object PSObject -Property $properties;
  }
  
  Function WriteProjects($solutionName, $rootPath, $company, $year, [psobject[]]$projects)
  {
      foreach ($project in $projects)
      {
          $file = New-Object -Type "System.IO.FileInfo" -ArgumentList ("$rootPath\" + $project.Path);
          $projectName = $project.Name;
          Write-Host "Preparing project '$projectName'...";
          $propertiesDir = $file.Directory.FullName + "\Properties";
          $exists = Test-Path $propertiesDir;
          if (!$exists)
          {
              New-Item $propertiesDir -Type Directory | Out-Null;
          }
  
          $projectText = GetProjectText $solutionName $project;
          WriteAllText $file.FullName $projectText;
          WriteSourceFile $rootPath $company $project;
          WriteAssemblyInfo $propertiesDir "AssemblyInfo.cs" $company $project $year;
      }
  }
  
  Function GetHeaderText($sourceFile, $company)
  {
      $text =
  @"
  //-----------------------------------------------------------------------
  // <copyright file="$sourceFile" company="$company">
  // Copyright (c) $company. All rights reserved.
  // </copyright>
  //-----------------------------------------------------------------------
  "@;
      return $text;
  }
  
  Function WriteAssemblyInfo($directory, $sourceFile, $company, $project, $year)
  {
      $projectName = $project.Name;
      $assemblyGuid = [guid]::NewGuid().ToString("D");
      $headerText = GetHeaderText $sourceFile $company;
      $text +=
  @"
  $headerText
  
  using System.Reflection;
  using System.Runtime.CompilerServices;
  using System.Runtime.InteropServices;
  
  [assembly: AssemblyTitle("$projectName")]
  [assembly: AssemblyDescription("")]
  [assembly: AssemblyConfiguration("")]
  [assembly: AssemblyCompany("")]
  [assembly: AssemblyProduct("$projectName")]
  [assembly: AssemblyCopyright("Copyright   $year")]
  [assembly: AssemblyTrademark("")]
  [assembly: AssemblyCulture("")]
  
  [assembly: ComVisible(false)]
  
  [assembly: Guid("$assemblyGuid")]
  
  [assembly: AssemblyVersion("1.0.0.0")]
  [assembly: AssemblyFileVersion("1.0.0.0")]
  "@;
  
      $fileName = $directory + "\" + $sourceFile;
      WriteAllText $fileName $text;
  }
  
  Function WriteSourceFile($rootPath, $company, $project)
  {
      $rootNamespace = $project.RootNamespace;
      $sourceFile = $project.FileToInclude;
      $headerText = GetHeaderText $sourceFile $company;
      $text = 
  @"
  $headerText
  
  namespace $rootNamespace
  
  "@;
      if ($sourceFile -eq "Program.cs")
      {
          $text +=
  @"
  {
      using System;
  
      internal sealed class Program
      {
          private static void Main(string[] args)
          {
              Class1 c = new Class1("world");
              string name = c.DoAsync().Result;
              Console.WriteLine("Hello, {0}!", name);
          }
      }
  }
  "@;
      }
      elseif ($project.FileToInclude -eq "Class1.cs")
      {
          $text +=
  @"
  {
      using System;
      using System.Threading.Tasks;
  
      public class Class1
      {
          private readonly string name;
  
          public Class1(string name)
          {
              this.name = name;
          }
  
          public Task<string> DoAsync()
          {
              return Task.FromResult(this.name);
          }
      }
  }
  "@;
      }
      elseif ($project.FileToInclude -eq "Test1.cs")
      {
          $text +=
  @"
  {
      using System.Threading.Tasks;
      using Xunit;
  
      public class Test1
      {
          public Test1()
          {
          }
  
          [Fact]
          public void Should_return_name_after_completing_sync()
          {
              Class1 c = new Class1("MyName");
              
              Task<string> task = c.DoAsync();
  
              Assert.True(task.IsCompleted);
              Assert.Equal("MyName", task.Result);
          }
      }
  }
  "@;
      }
  
      $fullPath = $rootPath + "\" + $project.Path;
      $fileInfo = New-Object -TypeName "System.IO.FileInfo" -ArgumentList $fullPath;
      $fileName = $fileInfo.Directory.FullName + "\" + $project.FileToInclude;
      WriteAllText $fileName $text;
  }
  
  Function GetProjectText($solutionName, $project)
  