
/* Generic Signature Changes */
cake1: Func P1.P1Constraint() has generic signature change from <τ_0_0 where τ_0_0 : P1, τ_0_0 : P2> to <τ_0_0 where τ_0_0 : P1>
cake1: Protocol P3 has generic signature change from <τ_0_0 : P1, τ_0_0 : P2> to <τ_0_0 : P1, τ_0_0 : P4>

/* RawRepresentable Changes */

/* Removed Decls */
cake1: Constructor Somestruct2.init(_:) has been removed
cake1: Constructor fixedLayoutStruct.init(b:a:) has been removed
cake1: Func C4.foo() has been removed
cake1: Subscript RemoveSetters.subscript(_:) has removed its setter
cake1: Var RemoveSetters.Value has removed its setter

/* Moved Decls */

/* Renamed Decls */
cake1: Func S1.foo5(x:y:) has been renamed to Func S1.foo5(x:y:z:)
cake1: Struct Somestruct2 has been renamed to Struct NSSomestruct2

/* Type Changes */
cake1: AssociatedType AssociatedTypePro.T3 has default type change from C1 to C6
cake1: Constructor S1.init(_:) has parameter 0 type change from Int to Double
cake1: Func C1.foo2(_:) has parameter 0 type change from Int to () -> ()
cake1: Func C7.foo(_:_:) has removed default argument from parameter 0
cake1: Func C7.foo(_:_:) has removed default argument from parameter 1
cake1: Func Somestruct2.foo1(_:) has parameter 0 type change from C3 to C1

/* Decl Attribute changes */
cake1: Class C5 is now without @objc
cake1: Enum IceKind is now without @_frozen
cake1: Func C1.foo1() is now not static
cake1: Func C5.dy_foo() is now with dynamic
cake1: Func S1.foo1() is now mutating
cake1: Func S1.foo3() is now static
cake1: Struct C6 is now with @_fixed_layout
cake1: Var C1.CIIns1 changes from weak to strong
cake1: Var C1.CIIns2 changes from strong to weak

/* Fixed-layout Type changes */
cake1: EnumElement FrozenKind.Fixed in a non-resilient type changes position from 1 to 2
cake1: EnumElement FrozenKind.Rigid in a non-resilient type changes position from 2 to 1
cake1: Var fixedLayoutStruct.a in a non-resilient type changes position from 1 to 0
cake1: Var fixedLayoutStruct.b in a non-resilient type changes position from 0 to 1
cake2: EnumElement FrozenKind.AddedCase is added to a non-resilient type
cake2: Var fixedLayoutStruct.c is added to a non-resilient type
cake2: Var fixedLayoutStruct.lazy_d.storage is added to a non-resilient type

/* Conformance changes */
cake1: Protocol P3 has added inherited protocol P4
cake1: Protocol P3 has removed inherited protocol P2
cake1: Struct fixedLayoutStruct has removed conformance to P1

/* Protocol Requirement Change */
cake1: AssociatedType AssociatedTypePro.T1 has removed default type Int
