anchor.diff:      member val Relocations = Unchecked.defaultof<uint32[]> with get,set
       
   open System.Runtime.CompilerServices
  +
   [<Extension>]
   type StreamExtensions () =
  +
       [<Extension>]
       static member TryReadAll(stream : Stream, buffer : byte[], offset : int, count : int) = 
           Debug.Assert (count > 0)
  
positive.code:             totalBytesRead <- 0
              while totalBytesRead < count && not isFinished do
                  bytesRead <- stream.Read (buffer, (offset + totalBytesRead), (count - totalBytesRead))
                  if bytesRead = 0
                  then isFinished <- true // break;
                  else totalBytesRead <- totalBytesRead + bytesRead
          totalBytesRead
  
  type COFFResourceReader() =
      static member private ConfirmSectionValues(hdr : SectionHeader, fileSize : System.Int64) = 
          if int64 hdr.PointerToRawData + int64 hdr.SizeOfRawData > fileSize
          then raise <| ResourceException("CoffResourceInvalidSectionSize")
          ()
      static member ReadWin32ResourcesFromCOFF(stream : Stream) = 
          let mutable peHeaders = new PEHeaders(stream)
          let mutable rsrc1 = SectionHeader()
          let mutable rsrc2 = SectionHeader()
          let mutable (foundCount : int) = 0
          for sectionHeader in peHeaders.SectionHeaders do
              if sectionHeader.Name = ".rsrc$01"
              then 
                  rsrc1 <- sectionHeader
                  foundCount <- foundCount + 1
              else 
                  if sectionHeader.Name = ".rsrc$02"
                  then 
                      rsrc2 <- sectionHeader
                      foundCount <- foundCount + 1
          if foundCount <> 2
          then raise <| ResourceException("CoffResourceMissingSection")
          COFFResourceReader.ConfirmSectionValues (rsrc1, stream.Length)
          COFFResourceReader.ConfirmSectionValues (rsrc2, stream.Length)
          let mutable imageResourceSectionBytes = Array.zeroCreate (rsrc1.SizeOfRawData + rsrc2.SizeOfRawData)
  
negative.code:                     pAdditional.data <- Array.zeroCreate (int pAdditional.DataSize)
                      reader.Read (pAdditional.data, 0, pAdditional.data.Length) |> ignore<int>
                      stream.Position <- stream.Position + 3L &&& ~~~3L
                      if pAdditional.pstringType.theString = Unchecked.defaultof<_> && (pAdditional.pstringType.Ordinal = uint16 CvtResFile.RT_DLGINCLUDE) then
                          () (* ERROR ContinueNotSupported *)
                      else
                          resourceNames.Add (pAdditional)
          resourceNames
  
      static member private ReadStringOrID(fhIn : BinaryReader) = 
          let mutable (pstring : RESOURCE_STRING) = RESOURCE_STRING()
          let mutable (firstWord : WCHAR) = (fhIn.ReadChar ())
          if int firstWord = 0xFFFF then
              pstring.Ordinal <- fhIn.ReadUInt16 ()
          else 
              pstring.Ordinal <- uint16 0xFFFF
              let mutable (sb : StringBuilder) = StringBuilder()
  