ZObjects currently have an isValid method. isValid checks against the schema of the type, and can be rather involved. This needs, in the general case, look-up of the relevant Z4/Type, and later even evaluation of generic types, etc.
isWellFormed is meant to be a simpler check. It does not need to look up anything. It does things such as ensure that all keys are syntactically correct, that there are no two keys which are the same (is that even possible?), that there is a Z1K1, that the value of the Z1K1 is a Z4 or a Z9 or a Z7, that all values are ZObjects (or strings?), etc.
isWellFormed is the same for all ZObjects.
isValid should call isWellFormed first.