anchor.diff:          | Some _, _ -> failwithf "unknown repository type %s." line
           | _ -> failwithf "unknown lock file format %s" line
   
  +    let private extractOption currentGroup option =
  +        match option with
  +        | ReferencesMode mode -> { currentGroup.Options with Strict = mode }
  +        | Redirects mode -> { currentGroup.Options with Redirects = mode }
  +        | ImportTargets mode -> { currentGroup.Options with Settings = { currentGroup.Options.Settings with ImportTargets = Some mode } } 
  +        | CopyLocal mode -> { currentGroup.Options with Settings = { currentGroup.Options.Settings with CopyLocal = Some mode }}
  +        | FrameworkRestrictions r -> { currentGroup.Options with Settings = { currentGroup.Options.Settings with FrameworkRestrictions = r }}
  +        | OmitContent omit -> { currentGroup.Options with Settings = { currentGroup.Options.Settings with OmitContent = Some omit }}
  +        | ReferenceCondition condition -> { currentGroup.Options with Settings = { currentGroup.Options.Settings with ReferenceCondition = Some condition }}
  +
       let Parse(lockFileLines) =
           let remove textToRemove (source:string) = source.Replace(textToRemove, "")
           let removeBrackets = remove "(" >> remove ")"
  
positive.code:                 | Remote(url) -> { currentGroup with RemoteUrl = Some url }::otherGroups
                  | Group(groupName) -> { GroupName = GroupName groupName; RepositoryType = None; RemoteUrl = None; Packages = []; SourceFiles = []; Options = InstallOptions.Default; LastWasPackage = false } :: currentGroup :: otherGroups
                  | InstallOption option -> 
                      let options =
                          match option with
                          | ReferencesMode mode -> {currentGroup.Options with Strict = mode }
                          | Redirects mode -> {currentGroup.Options with Redirects = mode }
                          | ImportTargets mode -> {currentGroup.Options with Settings = { currentGroup.Options.Settings with ImportTargets = Some mode } } 
                          | CopyLocal mode -> {currentGroup.Options with Settings = { currentGroup.Options.Settings with CopyLocal = Some mode }}
                          | FrameworkRestrictions r -> {currentGroup.Options with Settings = { currentGroup.Options.Settings with FrameworkRestrictions = r }}
                          | OmitContent omit -> {currentGroup.Options with Settings = { currentGroup.Options.Settings with OmitContent = Some omit }}
                          | ReferenceCondition condition -> {currentGroup.Options with Settings = { currentGroup.Options.Settings with ReferenceCondition = Some condition }}
                  
                      { currentGroup with Options = options }::otherGroups
  
                  | RepositoryType repoType -> { currentGroup with RepositoryType = Some repoType }::otherGroups
                  | NugetPackage details ->
                      match currentGroup.RemoteUrl with
  
negative.code:                         | Some [| owner; project |] ->
                              let path, commit, authKey =
                                  match details.Split ' ' with
                                  | [| filePath; commit; authKey |] -> filePath, commit |> removeBrackets, (Some authKey)
                                  | [| filePath; commit |] -> filePath, commit |> removeBrackets, None
                                  | _ -> failwith "invalid file source details."
                              { currentGroup with
                                  LastWasPackage = false
                                  SourceFiles = { Commit = commit
                                                  Owner = owner
  