// implements the interface method
  public Environment createAttributeContext(Environment parent, Property property) {

    Environment result = createEnvironment(parent);

    if (result instanceof AbstractEnvironment) {
      ((AbstractEnvironment) result).setContextProperty(property);
    }

    return result;
  }
  /**
   * Creates an environment for the specified package context.
   *
   * @param parent the parent environment of the environment to be created
   * @param context the package context (must not be <code>null</code>)
   * @return the new nested environment
   */
  protected Environment createPackageContext(
      Environment parent, org.eclipse.ocl.examples.pivot.Package context) {

    Environment result = createEnvironment(parent);

    if (result instanceof AbstractEnvironment) {
      ((AbstractEnvironment) result).setContextPackage(context);
    }

    return result;
  }
 // implements the interface method
 public Environment createOperationContext(Environment parent, Operation operation) {
   Environment result = createEnvironment(parent);
   if (result instanceof AbstractEnvironment) {
     ((AbstractEnvironment) result).setContextOperation(operation);
   }
   OCLFactory oclFactory = parent.getOCLFactory();
   for (Parameter next : operation.getOwnedParameters()) {
     // ensure that we use the OCL primitive types wherever possible
     Variable var = oclFactory.createVariable();
     var.setName(next.getName());
     var.setType(next.getType());
     var.setRepresentedParameter(next);
     result.addElement(var.getName(), var, true);
   }
   return result;
 }