In the Design By Contract (DBC) approach, programmers specify methods with pre and postconditions (also called contracts). Earlier work added protocols to the DBC approach to describe allowed method call sequences for classes. We extend this work to deal with a variant of generic classes and multithreaded classes. We present the semantical foundations of our extension. We describe a new technique to check that method contracts are correct w.r.t. to protocols. We show how to generate programs that must be proven to show that method contracts are correct w.r.t. to protocols. Because little support currently exists to help writing method contracts, our technique helps programmers to check their contracts early in the development process. Categories and Subject Descriptors D.2.1 [Software Engineering]: Requirements/Specifications; D.2.5 [Software Engineering]: Testing and Debugging Keywords Protocols, Multithreading, Object-Orientation, Design By Contract.