diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
index d5c66ee..b81e674 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaClassPrepareBreakpoint.java
@@ -91,9 +91,6 @@
 			final int charEnd, final boolean add, final Map<String, Object> attributes)
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
-			// create the marker
-			setMarker(resource.createMarker(JAVA_CLASS_PREPARE_BREAKPOINT));
-
 			// add attributes
 			attributes.put(IBreakpoint.ID, getModelIdentifier());
 			attributes.put(IMarker.CHAR_START, Integer.valueOf(charStart));
@@ -103,7 +100,8 @@
 			attributes.put(ENABLED, Boolean.TRUE);
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
 
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(JAVA_CLASS_PREPARE_BREAKPOINT, attributes));
 
 			register(add);
 		};
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
index 782809c..8ed1c06 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaLineBreakpoint.java
@@ -145,16 +145,14 @@
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addTypeNameAndHitCount(attributes, typeName, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			// add to breakpoint manager if requested
 			register(add);
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
index 077c4d5..2c1096e 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaPatternBreakpoint.java
@@ -67,16 +67,14 @@
 			final String markerType) throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addPatternAndHitCount(attributes, sourceName, pattern, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(add);
 		};
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
index de63d19..0aacd40 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaStratumLineBreakpoint.java
@@ -142,9 +142,6 @@
 			final String markerType) throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// modify pattern
 			String pattern = classNamePattern;
 			if (pattern != null && pattern.length() == 0) {
@@ -158,7 +155,8 @@
 					sourcePath, pattern, hitCount);
 			// set attributes
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(register);
 		};
@@ -263,14 +261,17 @@
 				if (fSuffix[i].length() == 0) {
 					return true;
 				}
-				if (typeName.endsWith(fSuffix[i]))
+				if (typeName.endsWith(fSuffix[i])) {
 					return true;
+				}
 			} else if (fPrefix[i] != null) {
-				if (typeName.startsWith(fPrefix[i]))
+				if (typeName.startsWith(fPrefix[i])) {
 					return true;
+				}
 			} else {
-				if (typeName.startsWith(patterns[i]))
+				if (typeName.startsWith(patterns[i])) {
 					return true;
+				}
 			}
 		}
 
@@ -436,8 +437,9 @@
 	}
 
 	public synchronized String[] getTypeNamePatterns() throws CoreException {
-		if (fTypeNamePatterns != null)
+		if (fTypeNamePatterns != null) {
 			return fTypeNamePatterns;
+		}
 
 		String patterns = getPattern();
 
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
index fea4972..e541615 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/breakpoints/JavaTargetPatternBreakpoint.java
@@ -64,16 +64,13 @@
 			throws DebugException {
 		IWorkspaceRunnable wr = monitor -> {
 
-			// create the marker
-			setMarker(resource.createMarker(markerType));
-
 			// add attributes
 			addLineBreakpointAttributes(attributes, getModelIdentifier(),
 					true, lineNumber, charStart, charEnd);
 			addSourceNameAndHitCount(attributes, sourceName, hitCount);
 			attributes.put(SUSPEND_POLICY, Integer.valueOf(getDefaultSuspendPolicy()));
-			// set attributes
-			ensureMarker().setAttributes(attributes);
+			// create the marker
+			setMarker(resource.createMarker(markerType, attributes));
 
 			register(add);
 		};
