anchor.diff:              | File -> "Adds file to project or solution"
               | Reference -> "Adds reference to project"
   
  -// TODO add above, add below
   type AddFileArgs =
       | [<First>][<CLIAlt "-p">] Project of string
       | [<First>][<CLIAlt "-s">] Solution of string
       | [<CLIAlt "-n">] Name of string
       | [<CLIAlt "dir">] Folder of string
  -    | [<CLIArg "--build-action">] [<CLIAlt "-b">] BuildAction of string // TODO - use actual build acton type
  +    | [<CLIArg "--build-action">] [<CLIAlt "-ba">] BuildAction of string
  +    | [<CLIArg "--above">] [<CLIAlt "-a">] Above of string
  +    | [<CLIArg "--below">] [<CLIAlt "-b">] Below of string
       | Link
   
       interface IArgParserTemplate with
  
positive.code:         let solution = results.TryGetResult <@ AddFileArgs.Solution @> //TODO
          let build = defaultResult AddFileArgs.BuildAction "" results |> BuildAction.TryParse
          let link = results.TryGetResult <@ AddFileArgs.Link @> |> Option.map (fun _ -> name)
          let activeState = Furnace.init project
          activeState 
          |> Furnace.addSourceFile (name, Some activeState.ProjectPath, build, link, None, None) 
          |> ignore
          return Continue
      }
  
  
negative.code:             | Folder _   -> "Add the file to this folder"
              | BuildAction _ -> "File build action"
              | Link -> "Adds as link"
              | Above _ -> "Adds above given file"
              | Below _ -> "Adds below given file"
  
  type AddReferenceArgs =
      | [<CLIAlt "-n">] Name of string
  