public String getName(Locale locale, String keyNameFormat) {
      DynamicTypeImpl type = (DynamicTypeImpl) getType();
      ParsedText parsedAnnotation = type.getParsedAnnotation(keyNameFormat);
      if (parsedAnnotation == null) {
        return type.toString();
      }

      if (nameString != null) {
        if (parsedAnnotation.equals(lastParsedAnnotation)) return nameString;
      }
      lastParsedAnnotation = parsedAnnotation;
      nameString = format(locale, keyNameFormat);
      return nameString;
    }