private static FieldConfig getChildFieldConfig( Map<String, FieldConfig> fieldConfigMap, FieldConfig parentFieldConfig, TypeModel parentType, String key) { if (parentType.isMap()) { return parentFieldConfig; } else if (parentType.isRepeated()) { return parentFieldConfig; } else if (parentType.isMessage()) { FieldModel childField = parentType.getField(key); if (childField == null) { throw new IllegalArgumentException( "Message type " + parentType + " does not have field " + key); } FieldConfig fieldConfig = fieldConfigMap.get(childField.getFullName()); if (fieldConfig == null) { fieldConfig = FieldConfig.createDefaultFieldConfig(childField); } return fieldConfig; } else { throw new IllegalArgumentException( "Primitive type " + parentType + " cannot have children. Child key: " + key); } }