Bug 221337 [Markers] MarkerItem has too much API
We are exposing too much as API in MarkerItem. We should only provide getAtttributeValue and the methods that support PATH_ATTRIBUTE and NAME_ATTRIBUTE as they are tricky. Everything else needs to be pushed down to an internal class. We should mention the relevant IMarker constants for those removed.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/MarkerGroup.java
for (int i = 0; i < attributeGroupingElements.length; i++) {
			AttributeMarkerGrouping attributeGrouping = new AttributeMarkerGrouping(
					attributeGroupingElements[i]);
			String defaultEntryId = attributeGrouping.getDefaultGroupingEntry();
			if (defaultEntryId != null) {
				if (idsToEntries.containsKey(defaultEntryId)) {
					MarkerGroupingEntry entry = (MarkerGroupingEntry) idsToEntries
							.get(defaultEntryId);
					entry.setAsDefault(attributeGrouping.getMarkerType());
				} else {
					IDEWorkbenchPlugin.log(NLS.bind(
							"Reference to invalid markerGroupingEntry {0}",
							defaultEntryId));
				}
			}
			IConfigurationElement[] mappings = attributeGrouping.getElement()
					.getChildren(MarkerSupportRegistry.ATTRIBUTE_MAPPING);
			for (int mappingIndex = 0; mappingIndex < mappings.length; mappingIndex++) {
				String entryId = mappings[mappingIndex]
						.getAttribute(MarkerSupportRegistry.MARKER_GROUPING_ENTRY);
				if (idsToEntries.containsKey(entryId)) {
					MarkerGroupingEntry entry = (MarkerGroupingEntry) idsToEntries
							.get(entryId);
					entry.getMarkerGroup().mapAttribute(
							attributeGrouping,
							entry,
							mappings[mappingIndex]
									.getAttribute(MarkerSupportRegistry.VALUE));
				} else {
					IDEWorkbenchPlugin.log(NLS.bind(