/*
   Estrutura Padrão (Visão Geral da Estrutura de Implementação Padrão)
   Estrutura localizada em plug-in com.ibm.xtools.patterns.framework
   Implementações de amostra localizadas em plug-in com.ibm.xtools.patterns.sample
*/

class Pattern extends AbstractPatternDefinition {

   ... inicializa metadados (difere entre estática ou dinâmica)
   ... inicializa parâmetros de padrão mantidos privadamente
   ... declara dependências de parâmetro padrão (para acionar chamadas de atualização em parâmetros)

   private class Instance extends AbstractPatternInstance {
      ... manipula método de expansão para expansões direcionadas a instância (fornece o padrão)
      ... manipula a lógica de comportamento de instância com base em destino (fornece o padrão)
      ... manipula a nomenclatura de representações de instância dinamicamente
   }

   private class Parameter [0..*] extends AbstractPatternParameter {
      ... inicializa metadados (difere entre estática ou dinâmica)
      ... declara restrição OCL2 opcional para validar valores propostos
      ... manipula método de expansão para valores incluídos direcionados por parâmetro (fornece o padrão)
      ... manipula método de expansão para valores removidos direcionados por parâmetro (fornece o padrão)
      ... manipula método de expansão para valores mantidos direcionados por parâmetro (fornece o padrão)
      ... manipula método de atualização para notificações de dependência de parâmetros
      ... manipular é um método válido para validar valores propostos (fornece o padrão)
   }

}