anchor.diff:            Path.Combine((getIncludeScriptRootFolder includeScriptsRootFolder framework).FullName, groupName.ToString())
             |> DirectoryInfo
   
  -  let getScriptFile (includeScriptsRootFolder: DirectoryInfo) (framework: FrameworkIdentifier) (groupName: GroupName) (package: PackageName) (scriptType: ScriptType) = 
  +  let getScriptFile (includeScriptsRootFolder: DirectoryInfo) (framework: FrameworkIdentifier) (groupName: GroupName) (package: PackageName) (extension: string) =
         let folder = getScriptFolder includeScriptsRootFolder framework groupName
   
  -      Path.Combine(folder.FullName, sprintf "include.%s.%s" (package.GetCompareString()) scriptType.Extension)
  +      Path.Combine(folder.FullName, sprintf "include.%s.%s" (package.GetCompareString()) extension)
         |> FileInfo
   
     let getGroupNameAsOption groupName =
  
positive.code:       getDllOrder (dllFiles.Keys |> Seq.toList)
        |> List.map (fun a -> dllFiles.[a])
  
  module ScriptGeneration =
    open PackageAndAssemblyResolution
    // this record holds what script generator needs
    // it might benefit some shuffling / design reconsideration
    // to get more consistent subset of required info
    type ScriptGenInput = { 
        Framework                : FrameworkIdentifier
        PackagesOrGroupFolder    : DirectoryInfo
        IncludeScriptsRootFolder : DirectoryInfo
        PackageInstallModel      : InstallModel
        DependentScripts         : FileInfo seq
    }
  
    type ScriptType = 
    | CSharp 
    | FSharp
      with
        member x.Extension =
          match x with
          | CSharp -> "csx"
          | FSharp -> "fsx"
  
    let makeRelativePath (scriptFile: FileInfo) (libFile: FileInfo) =
      (scriptFile.FullName |> Uri).MakeRelativeUri(libFile.FullName |> Uri).ToString()
  
    // default implementation of F# include script generator
    let generateFSharpScript scriptFile (input: ScriptGenInput) =
      let packageName = input.PackageInstallModel.PackageName
  
      let depLines =
        input.DependentScripts
        |> Seq.map (fun script -> sprintf """#load @"%s" """ script.Name)
  
      let dllFiles =
        if packageName.GetCompareString().ToLowerInvariant() = "fsharp.core" then
          []
        else
          getDllsWithinPackage input.Framework input.PackageInstallModel
  
      let dllLines =
        dllFiles
        |> Seq.map (makeRelativePath scriptFile >> sprintf """#r "%s" """)
  
      depLines
      |> fun lines -> Seq.append lines dllLines
      |> fun lines -> Seq.append lines [ sprintf "printfn \"%%s\" \"Loaded %s\"" (packageName.GetCompareString()) ]
  
    // default implementation of C# include script generator
    let generateCSharpScript scriptFile (input: ScriptGenInput) =
      let packageName = input.PackageInstallModel.PackageName
  
      let depLines =
        input.DependentScripts
        |> Seq.map (fun script -> sprintf """#load "%s" """ script.Name)
  
      let dllFiles = getDllsWithinPackage input.Framework input.PackageInstallModel
  
      let dllLines =
        dllFiles
        |> Seq.map (makeRelativePath scriptFile >> sprintf """#r "%s" """)
  
      depLines
      |> fun lines -> Seq.append lines dllLines
      |> fun lines -> Seq.append lines [ sprintf "System.Console.WriteLine(\"Loaded {0}\", \"%s\");" (packageName.GetCompareString()) ]
  
    let getIncludeScriptRootFolder (includeScriptsRootFolder: DirectoryInfo) (framework: FrameworkIdentifier) = 
        Path.Combine(includeScriptsRootFolder.FullName, string framework)
  
negative.code: 
    // Generate a fsharp script from the given order of packages, if a package is ordered before its dependencies this function will throw.
    let generateScripts
        (scriptGenerator          : ScriptGenInput -> seq<string>)
        (getScriptFile            : GroupName -> PackageName -> FileInfo)
        (includeScriptsRootFolder : DirectoryInfo)
        (framework                : FrameworkIdentifier)
  