as for a class's private member, how to design the contract? it is true that the caller of a private member of a class must be
one or several of the class's member. so perhaps the contract for the outer parameters( arguments, object's data member and global variable) should like this:
1. the caller knows more about the arguments passed to the private member, so it should verify it and the private member should assert it.
2. for data member, it's rather complex
3. for global variable, to the methord called, is just like its parameters