Source: https://www.cs.usfca.edu/~wolber/courses/110/lectures/arrayBuiltIn.pdf