void (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)); } } }