Add tests for deep validation and fix isValid() signature inconsistency

Deep models weren't validated properly due to inconsistent isValid() calls.