
/* Generic Signature Changes */
cake1: Func P1.P1Constraint() has generic signature change from <Self where Self : P1, Self : P2> to <Self where Self : P1>
cake1: Protocol P3 has generic signature change from <Self : P1, Self : P2> to <Self : P1, Self : 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

/* Decl Attribute changes */
cake1: Func C1.foo1() is now not static
cake1: Func S1.foo1() is now mutating
cake1: Func S1.foo3() is now static
cake1: Var C1.CIIns1 changes from weak to strong
cake1: Var C1.CIIns2 changes from strong to weak

/* 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
