private void readExternal(Element element) {
    myId = Objects.requireNonNull(element.getAttributeValue(ATTRIBUTE_ID));
    myTipId = element.getAttributeValue(ATTRIBUTE_TIP_ID);
    String needToBeShownInGuide = element.getAttributeValue(ATTRIBUTE_SHOW_IN_GUIDE);
    if (needToBeShownInGuide != null) {
      myNeedToBeShownInGuide = Boolean.parseBoolean(needToBeShownInGuide);
    }
    myDaysBeforeFirstShowUp = StringUtil.parseInt(element.getAttributeValue(ATTRIBUTE_FIRST_SHOW), myDaysBeforeFirstShowUp);
    myDaysBetweenSuccessiveShowUps = StringUtil.parseInt(element.getAttributeValue(ATTRIBUTE_SUCCESSIVE_SHOW), myDaysBetweenSuccessiveShowUps);
    myMinUsageCount = StringUtil.parseInt(element.getAttributeValue(ATTRIBUTE_MIN_USAGE_COUNT), myMinUsageCount);
    myUtilityScore = StringUtil.parseInt(element.getAttributeValue(ATTRIBUTE_UTILITY_SCORE), myUtilityScore);
    List<Element> actionEvents = element.getChildren(ELEMENT_TRACK_ACTION);
    for (Element actionElement : actionEvents) {
      @NonNls String actionId = actionElement.getAttributeValue(ATTRIBUTE_ID);
      if (actionId != null) {
        myActionEvents.add(FeatureUsageEvent.createActionEvent(myId, actionId));
      }
    }
    List<Element> intentionEvents = element.getChildren(ELEMENT_TRACK_INTENTION);
    for (Element intentionElement : intentionEvents) {
      @NonNls String intentionClassName = intentionElement.getAttributeValue(ATTRIBUTE_CLASS_NAME);
      if (intentionClassName != null) {
        myIntentionEvents.add(FeatureUsageEvent.createIntentionEvent(myId, intentionClassName));
      }
    }
    List<Element> dependencies = element.getChildren(ELEMENT_DEPENDENCY);
    if (!dependencies.isEmpty()) {
      myDependencies = new HashSet<>();
      for (Element dependencyElement : dependencies) {
        myDependencies.add(dependencyElement.getAttributeValue(ATTRIBUTE_ID));
      }
    }
  }
private void readExternal(Element element)