You are given a list of events where each event is represented by a start time and an end time. The times can be assumed to be integers (for example, representing hours in a day or a timestamp).
Your task is to write a function that calculates the maximum number of events that overlap at any given time point.
Suppose you are given events as follows:
events = [
{ "start": 1, "end": 4 },
{ "start": 2, "end": 5 },
{ "start": 7, "end": 9 },
{ "start": 3, "end": 6 }
]
In this example, the maximum number of overlapping events is 3 (during the period when events starting at 1, 2, and 3 are overlapping).
Write your solution in the programming language of your choice and ensure it handles edge cases correctly.