gt:     protected EClass eStaticClass() {
context: /**
   * Copyright (c) 2010-2020 Contributors to the openHAB project
   *
   * See the NOTICE file(s) distributed with this work for additional
   * information.
   *
   * This program and the accompanying materials are made available under the
   * terms of the Eclipse Public License 2.0 which is available at
   * http://www.eclipse.org/legal/epl-2.0
   *
   * SPDX-License-Identifier: EPL-2.0
   */
  package org.openhab.binding.tinkerforge.internal.model.impl;
  
  import java.lang.reflect.InvocationTargetException;
  import java.math.BigDecimal;
  import java.util.concurrent.atomic.AtomicBoolean;
  
  import org.eclipse.emf.common.notify.Notification;
  import org.eclipse.emf.common.notify.NotificationChain;
  import org.eclipse.emf.common.util.EList;
  import org.eclipse.emf.ecore.EClass;
  import org.eclipse.emf.ecore.InternalEObject;
  import org.eclipse.emf.ecore.impl.ENotificationImpl;
  import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  import org.eclipse.emf.ecore.util.EcoreUtil;
  import org.openhab.binding.tinkerforge.internal.LoggerConstants;
  import org.openhab.binding.tinkerforge.internal.TinkerforgeErrorHandler;
  import org.openhab.binding.tinkerforge.internal.model.CallbackListener;
  import org.openhab.binding.tinkerforge.internal.model.MBrickletPTC;
  import org.openhab.binding.tinkerforge.internal.model.MSensor;
  import org.openhab.binding.tinkerforge.internal.model.MSubDeviceHolder;
  import org.openhab.binding.tinkerforge.internal.model.MTFConfigConsumer;
  import org.openhab.binding.tinkerforge.internal.model.ModelPackage;
  import org.openhab.binding.tinkerforge.internal.model.PTCResistance;
  import org.openhab.binding.tinkerforge.internal.model.TFBaseConfiguration;
  import org.openhab.binding.tinkerforge.internal.tools.Tools;
  import org.openhab.binding.tinkerforge.internal.types.DecimalValue;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  import com.tinkerforge.BrickletPTC;
  import com.tinkerforge.NotConnectedException;
  import com.tinkerforge.TimeoutException;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model object '<em><b>PTC Resistance</b></em>'.
   * <!-- end-user-doc -->
   * <p>
   * The following features are implemented:
   * </p>
   * <ul>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getLogger <em>Logger</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getUid <em>Uid</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#isPoll <em>Poll</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getEnabledA <em>Enabled A</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getSubId <em>Sub Id</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getMbrick <em>Mbrick</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getSensorValue <em>Sensor
   * Value</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getTfConfig <em>Tf Config</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getCallbackPeriod <em>Callback
   * Period</em>}</li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getDeviceType <em>Device Type</em>}
   * </li>
   * <li>{@link org.openhab.binding.tinkerforge.internal.model.impl.PTCResistanceImpl#getThreshold <em>Threshold</em>}
   * </li>
   * </ul>
   *
   * @generated
   */
  public class PTCResistanceImpl extends MinimalEObjectImpl.Container implements PTCResistance {
      /**
       * The default value of the '{@link #getLogger() <em>Logger</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getLogger()
       * @generated
       * @ordered
       */
      protected static final Logger LOGGER_EDEFAULT = null;
  
      /**
       * The cached value of the '{@link #getLogger() <em>Logger</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getLogger()
       * @generated
       * @ordered
       */
      protected Logger logger = LOGGER_EDEFAULT;
  
      /**
       * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getUid()
       * @generated
       * @ordered
       */
      protected static final String UID_EDEFAULT = null;
  
      /**
       * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getUid()
       * @generated
       * @ordered
       */
      protected String uid = UID_EDEFAULT;
  
      /**
       * The default value of the '{@link #isPoll() <em>Poll</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #isPoll()
       * @generated
       * @ordered
       */
      protected static final boolean POLL_EDEFAULT = true;
  
      /**
       * The cached value of the '{@link #isPoll() <em>Poll</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #isPoll()
       * @generated
       * @ordered
       */
      protected boolean poll = POLL_EDEFAULT;
  
      /**
       * The default value of the '{@link #getEnabledA() <em>Enabled A</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getEnabledA()
       * @generated
       * @ordered
       */
      protected static final AtomicBoolean ENABLED_A_EDEFAULT = null;
  
      /**
       * The cached value of the '{@link #getEnabledA() <em>Enabled A</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getEnabledA()
       * @generated
       * @ordered
       */
      protected AtomicBoolean enabledA = ENABLED_A_EDEFAULT;
  
      /**
       * The default value of the '{@link #getSubId() <em>Sub Id</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getSubId()
       * @generated
       * @ordered
       */
      protected static final String SUB_ID_EDEFAULT = null;
  
      /**
       * The cached value of the '{@link #getSubId() <em>Sub Id</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getSubId()
       * @generated
       * @ordered
       */
      protected String subId = SUB_ID_EDEFAULT;
  
      /**
       * The cached value of the '{@link #getSensorValue() <em>Sensor Value</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getSensorValue()
       * @generated
       * @ordered
       */
      protected DecimalValue sensorValue;
  
      /**
       * The cached value of the '{@link #getTfConfig() <em>Tf Config</em>}' containment reference.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getTfConfig()
       * @generated
       * @ordered
       */
      protected TFBaseConfiguration tfConfig;
  
      /**
       * The default value of the '{@link #getCallbackPeriod() <em>Callback Period</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getCallbackPeriod()
       * @generated
       * @ordered
       */
      protected static final long CALLBACK_PERIOD_EDEFAULT = 1000L;
  
      /**
       * The cached value of the '{@link #getCallbackPeriod() <em>Callback Period</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getCallbackPeriod()
       * @generated
       * @ordered
       */
      protected long callbackPeriod = CALLBACK_PERIOD_EDEFAULT;
  
      /**
       * The default value of the '{@link #getDeviceType() <em>Device Type</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getDeviceType()
       * @generated
       * @ordered
       */
      protected static final String DEVICE_TYPE_EDEFAULT = "ptc_resistance";
  
      /**
       * The cached value of the '{@link #getDeviceType() <em>Device Type</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getDeviceType()
       * @generated
       * @ordered
       */
      protected String deviceType = DEVICE_TYPE_EDEFAULT;
  
      /**
       * The default value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getThreshold()
       * @generated
       * @ordered
       */
      protected static final BigDecimal THRESHOLD_EDEFAULT = new BigDecimal("2");
  
      /**
       * The cached value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @see #getThreshold()
       * @generated
       * @ordered
       */
      protected BigDecimal threshold = THRESHOLD_EDEFAULT;
  
      private BrickletPTC tinkerforgeDevice;
  
      private ResistanceListener listener;
  
      /**
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @generated
       */
      protected PTCResistanceImpl() {
          super();
      }
  
      /**
       * <!-- begin-user-doc -->
       * <!-- end-user-doc -->
       * 
       * @generated
       */
      @Override
  