gt: 		switch (featureID) {
context: /**
   * Copyright (c) 2012, 2014 Sme.UP and others.
   * All rights reserved. This program and the accompanying materials
   * are made available under the terms of the Eclipse Public License v1.0
   * which accompanies this distribution, and is available at
   * http://www.eclipse.org/legal/epl-v10.html
   */
  package org.asup.os.type.pgm.impl;
  
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Stack;
  
  import org.asup.os.omac.impl.ObjectImpl;
  import org.asup.os.type.pgm.QOperatingSystemProgramPackage;
  import org.asup.os.type.pgm.QCallableProgram;
  import org.asup.os.type.pgm.QProgramStack;
  import org.eclipse.emf.common.notify.Notification;
  import org.eclipse.emf.ecore.EClass;
  import org.eclipse.emf.ecore.impl.ENotificationImpl;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model object '<em><b>QProgram Stack</b></em>'.
   * <!-- end-user-doc -->
   * <p>
   * The following features are implemented:
   * <ul>
   *   <li>{@link org.asup.os.type.pgm.impl.ProgramStackImpl#getDateEnter <em>Date Enter</em>}</li>
   *   <li>{@link org.asup.os.type.pgm.impl.ProgramStackImpl#getDateExit <em>Date Exit</em>}</li>
   * </ul>
   * </p>
   *
   * @generated
   */
  public class ProgramStackImpl extends ObjectImpl implements QProgramStack {
  	/**
  	 * The default value of the '{@link #getDateEnter() <em>Date Enter</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getDateEnter()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final Date DATE_ENTER_EDEFAULT = null;
  	/**
  	 * The cached value of the '{@link #getDateEnter() <em>Date Enter</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getDateEnter()
  	 * @generated
  	 * @ordered
  	 */
  	protected Date dateEnter = DATE_ENTER_EDEFAULT;
  	/**
  	 * The default value of the '{@link #getDateExit() <em>Date Exit</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getDateExit()
  	 * @generated
  	 * @ordered
  	 */
  	protected static final Date DATE_EXIT_EDEFAULT = null;
  	/**
  	 * The cached value of the '{@link #getDateExit() <em>Date Exit</em>}' attribute.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #getDateExit()
  	 * @generated
  	 * @ordered
  	 */
  	protected Date dateExit = DATE_EXIT_EDEFAULT;
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = 1L;
  	private Stack<QCallableProgram> stack;
  	
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	protected ProgramStackImpl() {
  		super();
  		this.stack = new Stack<QCallableProgram>();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	protected EClass eStaticClass() {
  		return QOperatingSystemProgramPackage.Literals.PROGRAM_STACK;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public Date getDateEnter() {
  		return dateEnter;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setDateEnter(Date newDateEnter) {
  		Date oldDateEnter = dateEnter;
  		dateEnter = newDateEnter;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, QOperatingSystemProgramPackage.PROGRAM_STACK__DATE_ENTER, oldDateEnter, dateEnter));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public Date getDateExit() {
  		return dateExit;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void setDateExit(Date newDateExit) {
  		Date oldDateExit = dateExit;
  		dateExit = newDateExit;
  		if (eNotificationRequired())
  			eNotify(new ENotificationImpl(this, Notification.SET, QOperatingSystemProgramPackage.PROGRAM_STACK__DATE_EXIT, oldDateExit, dateExit));
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public void push(QCallableProgram element) {
  		this.stack.push(element);		
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public QCallableProgram peek() {
  		return this.stack.peek();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public QCallableProgram pop() {
  		return this.stack.pop();		
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public boolean isEmpty() {
  		return stack.isEmpty();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public List<QCallableProgram> list() {
  		List<QCallableProgram> programList = new ArrayList<QCallableProgram>();
  		Iterator<QCallableProgram> programs = stack.iterator();
  		while(programs.hasNext()) {
  			QCallableProgram program = programs.next();
  			programList.add(program);
  		}
  		return programList;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated NOT
  	 */
  	public int size() {
  		return stack.size();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public Object eGet(int featureID, boolean resolve, boolean coreType) {
  