anchor.diff:  
                   // positive range
                   TimeSpan.FromMinutes(30.0), shouldSucceed
  -                TimeSpan.FromHours(1.0), shouldSucceed
                   TimeSpan.FromHours(2.0), shouldSucceed
                   TimeSpan(13, 59, 0), shouldSucceed
                   TimeSpan.FromHours(14.0), shouldSucceed
  
positive.code:             yield!
                  offsets
                  |> List.map (fun (offset, _) ->
                      // ensure offset isn't local offset -> doesn't throw
                      let offset =
                          if offset = localOffset then
                              // adjust towards 0, otherwise might get out of range (+/- 14h)
                              if offset.TotalHours < 0.0 then
                                  offset.Add(TimeSpan.FromMinutes(1.0))
                              else
                                  offset.Subtract(TimeSpan.FromMinutes(1.0))
                          else
                              offset
                      (offset, shouldThrowUTCOffsetAndLocalDateTimeDontMatch)
                  )
                  |> withCtor fromLocalDateTime
                  |> List.map toTestCase
  
negative.code: 
                  // negative range
                  TimeSpan.FromMinutes(-30.0), shouldSucceed
                  TimeSpan.FromHours(-2.0), shouldSucceed
                  TimeSpan(-13, -59, 0), shouldSucceed
                  TimeSpan.FromHours(-14.0), shouldSucceed
  