anchor.diff:  type Result<'T,'TError> = 
            | Ok of 'T 
            | Error of 'TError
  +module Result =
  +    let map f inp = match inp with Error e -> Error e | Ok x -> Ok (f x)
  +    let bind f inp = match inp with Error e -> Error e | Ok x -> f x
   
   module Program=
       let surfaceAreaCli file=
  
positive.code:                 (SurfaceArea.get assembly)
                  |> Json.serialize
                  |> Json.formatWith JsonFormattingOptions.Pretty
                  |> Console.WriteLine
                  0
              | None, Some ( original,new_), None ->
                  let maybeDiff = getDiff original new_
                  match maybeDiff with
                  | Ok diff-> 
                      diff
                      |> Json.serialize
                      |> Json.formatWith JsonFormattingOptions.Pretty
                      |> Console.WriteLine 
                      0
                  | Error message-> 
                      Console.Error.WriteLine message
                      1
              | None, None, Some (original,new_) ->
                  let maybeDiff = getDiff original new_
                  match maybeDiff with
                  | Ok diff-> 
                      let magnitude = Compare.packageChangeMagnitude diff
                      Console.WriteLine magnitude
                      0
                  | Error message-> 
                      Console.Error.WriteLine message
                      1
               | _, _,_ ->
                  Console.WriteLine(parser.PrintUsage())
                  1
negative.code: 
          let all = results.GetAllResults()
          if List.isEmpty all || results.IsUsageRequested then
              Error(parser.PrintUsage())
          else
              let maybeFile = results.TryGetResult(<@ Surface_of @>)
              let maybeDiff = results.TryGetResult(<@ Diff @>)
  