Tu colección podría tener una clase base, con estos detalles:
Si la subespecificaciones pueden estar anidadas, si es fija y siempre la misma añade diferentes tipos a la enumeración hasta ese nivel de anidación, si es variable, añade un campo (por ejemplo: tipoAnidado) en la clase detalles que señale un valor. 0 sería para la subespecificación bajo la 'especificación', con cada subespecificación bajo una subespecificación suma 1...
Código [Seleccionar]
enumeracion Tipos
TIPO_DETALLE_PEDIDO
TIPO_ESPECIFICACION
TIPO_SUBESPECIFICACION
fin enumeracion
Clase Detalles
string Key1
string Key2
Tipos Tipo
// Byte tipoAnidado
fin clase
Clase Pedidos
array de Detalles Pedido()
// FALTA: métodos públicos y/o privados que precise la clase para rellenar y accede al array Pedido
fin clase
Si la subespecificaciones pueden estar anidadas, si es fija y siempre la misma añade diferentes tipos a la enumeración hasta ese nivel de anidación, si es variable, añade un campo (por ejemplo: tipoAnidado) en la clase detalles que señale un valor. 0 sería para la subespecificación bajo la 'especificación', con cada subespecificación bajo una subespecificación suma 1...