{
    if (extendedMetaDataHolderCache != null)
    {
      EClassifierExtendedMetaData result = (EClassifierExtendedMetaData)extendedMetaDataHolderCache.get(eClassifier);
      if (result == null)
      {
        extendedMetaDataHolderCache.put(eClassifier, result = createEClassifierExtendedMetaData(eClassifier));
      }
      return result;
    }
    else
    {
      EClassifierExtendedMetaData.Holder holder = (EClassifierExtendedMetaData.Holder)eClassifier;
      EClassifierExtendedMetaData result = holder.getExtendedMetaData();
      if (result == null)
      {
        holder.setExtendedMetaData(result = createEClassifierExtendedMetaData(eClassifier));
      }
      return result;
    }  
  }