{
    EAnnotation eAnnotation = getAnnotation(eDataType, false);
    if (eAnnotation != null)
    {
      EMap<String, String> details = eAnnotation.getDetails();
      String itemType = details.get("itemType");
      if (itemType != null)
      {
        int index = itemType.lastIndexOf("#");
        EClassifier type = 
          index == -1 ?
            getType(eDataType.getEPackage(), itemType) :
            index == 0 ?
              getType((String)null, itemType.substring(1)) :
              getType(itemType.substring(0, index), itemType.substring(index + 1));
        if (type instanceof EDataType)
        {
          return (EDataType)type;
        }
      }
    }

    return null;
  }