Added generic type parameter to Migration interface to allow more sophisticated implementations without requiring unchecked casts.