diff --git a/internal/impl/validate.go b/internal/impl/validate.go
index bb6d47d..4ae1d03 100644
--- a/internal/impl/validate.go
+++ b/internal/impl/validate.go
@@ -220,6 +220,7 @@
 }
 
 func (mi *MessageInfo) validate(b []byte, groupTag wire.Number, opts unmarshalOptions) (result ValidationStatus) {
+	mi.init()
 	type validationState struct {
 		typ              validationType
 		keyType, valType validationType
@@ -244,7 +245,6 @@
 	for len(states) > 0 {
 		st := &states[len(states)-1]
 		if st.mi != nil {
-			st.mi.init()
 			if flags.ProtoLegacy && st.mi.isMessageSet {
 				return ValidationUnknown
 			}
@@ -434,10 +434,13 @@
 				v := b[:size]
 				b = b[size:]
 				switch vi.typ {
-				case validationTypeMessage, validationTypeMap:
-					if vi.mi == nil && vi.typ == validationTypeMessage {
+				case validationTypeMessage:
+					if vi.mi == nil {
 						return ValidationUnknown
 					}
+					vi.mi.init()
+					fallthrough
+				case validationTypeMap:
 					states = append(states, validationState{
 						typ:     vi.typ,
 						keyType: vi.keyType,
@@ -487,6 +490,7 @@
 					if vi.mi == nil {
 						return ValidationUnknown
 					}
+					vi.mi.init()
 					states = append(states, validationState{
 						typ:      validationTypeGroup,
 						mi:       vi.mi,
