Please solve the programming task below using a self-contained code snippet in a markdown code block.

A magic index in an array A[0...n-1] is defined to be an index such that A[i] = i. Given a sorted array of integers, write a method to find a magic index, if one exists, in array A. If not, return -1. If there are more than one magic index, return the smallest one.
Please complete the following python code precisely:
```python
class Solution:
    def findMagicIndex(self, nums: List[int]) -> int:
```