Herschel products can exist as simple products and as context products. Contexts are special types of products that contain references to other products stored. This enables a mean to build complex data structures. Context products also contain the required metadata as applicable to the group of products that contains. There are two "standard" types of context products provided: ListContext (for grouping products into sequences or lists) and MapContexts (for grouping products into containers with access to each one by key).