  Leighton's graph covering theorem says that two finite graphs with a common
cover have a common finite cover. We present a new proof of this using
groupoids, and use this as a model to prove two generalisations of the theorem.
The first generalisation, which we refer to as the symmetry-restricted version,
restricts how balls of a given size in the universal cover can map down to the
two finite graphs when factoring through the common finite cover - this answers
a question of Neumann. Secondly, we consider covers of graphs of spaces (or of
more general objects), which leads to an even more general version of
Leighton's Theorem. We also compute upper bounds for the sizes of the finite
covers obtained in Leighton's Theorem and its generalisations. An appendix by
Gardam and Woodhouse provides an alternative proof of the symmetry-restricted
version, that uses Haar measure instead of groupoids.
