/*
   Patterns Framework (Pattern Implementation Structure Overview)
   Framework found in com.ibm.xtools.patterns.framework plug-in
   Sample implementations found in com.ibm.xtools.patterns.sample plug-in
*/

class Pattern extends AbstractPatternDefinition {

   ... initializes metadata (differs based on static vs. dynamic)
   ... initializes privately held pattern parameters
   ... declares pattern parameter dependencies (to trigger update calls on parameters)

   private class Instance extends AbstractPatternInstance {
      ... handles expand method for instance-directed expands (provides default)
      ... handles logic for target-based instance-behavior (provides default)
      ... handles naming of instance representations dynamically
   }

   private class Parameter [0..*] extends AbstractPatternParameter {
      ... initializes metadata (differs based on static vs. dynamic)
      ... declares optional OCL2 constraint for validating proposed values
      ... handles expand method for parameter-directed added values (provides default)
      ... handles expand method for parameter-directed removed values (provides default)
      ... handles expand method for parameter-directed maintained values
      ... handles update method for parameter-dependency notifications
      ... handles is valid method for validating proposed values (provides default)
   }

}