public void markFile() {
   if (!markerHandle.exists()) {
     return;
   }
   try {
     IMarker[] markers =
         markerHandle.findMarkers(modelMarker.getMarkerId(), true, IResource.DEPTH_ZERO);
     if (modelMarker.isActive(markers)) {
       if (markers.length == 0) {
         IMarker marker = markerHandle.createMarker(modelMarker.getMarkerId());
         IResource resource = (IResource) markerHandle.getAdapter(IResource.class);
         marker.setAttributes(
             new String[] {
               MarkerProblem.ATTRIB_DESCRIPTION,
               MarkerProblem.ATTRIB_PATH,
               MarkerProblem.ATTRIB_SOURCE_OPENER
             },
             getMarkerAttributes(resource));
       }
     } else {
       markerHandle.deleteMarkers(modelMarker.getMarkerId(), true, IResource.DEPTH_ZERO);
     }
   } catch (CoreException e) {
     new Logger(CharacterCorePlugin.ID).error(Messages.ResourceModelMarker_ErrorWhileMarking, e);
   }
 }
 private Object[] getMarkerAttributes(IResource resource) {
   IContainer container = resource.getParent();
   String displayName =
       new ModelExtensionPoint().getDisplayConfiguration(resource).getDisplayName();
   CharacterDisplayNameProvider characterNameProvider =
       new CharacterDisplayNameProvider(container);
   String modelName =
       new ModelDisplayNameProvider(displayName, characterNameProvider).getDisplayName();
   return new Object[] {
     modelMarker.getDescription(displayName, characterNameProvider.getDisplayName()),
     modelName,
     CharacterModelEditorOpener.ID
   };
 }