Source: https://www.cs.uic.edu/~cornelia/papers/iscram17.pdf