anchor.diff:              "fsharp.explorer.addFile",
               objfy2 (fun m ->
                   match unbox m with
  -                | Project (_, proj, _, _, _, _, _, _) ->
  -                    let opts = createEmpty<InputBoxOptions>
  -                    opts.placeHolder <- Some "new.fs"
  -                    opts.prompt <- Some "New file name, relative to project file"
  -                    opts.value <- Some "new.fs"
  -
  -                    window.showInputBox (opts)
  +                | Project (_, proj, _, files, _, _, _, _) ->
  +                    createNewFileDialg proj files "New file name, relative to project file"
                       |> Promise.ofThenable
                       |> Promise.map (fun file ->
                           match file with
  
positive.code:         else
              (fn + ".fs")
  
      let newProject () =
          promise {
              let! templates = LanguageService.dotnetNewList ()
  
negative.code:             "fsharp.explorer.addBelow",
              objfy2 (fun m ->
                  match unbox m with
                  | File (parent, fr_om, name, Some virtPath, proj) ->
                      match parent.Value with
                      | Some (Project (_, proj, _, files, _, _, _, _)) ->
                          createNewFileDialg proj files "New file name, relative to selected file"
                          |> Promise.ofThenable
                          |> Promise.map (fun file ->
                              match file with
                              | Some file ->
                                  let file' = handleUntitled file
                                  FsProjEdit.addFileBelow proj virtPath file'
                              | None -> Promise.empty)
                          |> unbox
                      | _ ->
                          undefined
  
                  | _ -> undefined)
          )
          |> context.Subscribe
  