diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
index 2e81b62..ee1455a 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/widget/L2SimpleEditingTest.java
@@ -255,4 +255,10 @@
 		assertFalse(comment.isAssociated());
 		assertNull(comment.getParent());
 	}
+
+	@Test
+	public void givenAComment_whenCaretInComment_shouldNotAllowToInsertAComment() throws Exception {
+		widget.insertComment();
+		assertFalse("can insert comment within comment", widget.canInsertComment());
+	}
 }
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
index 88f1e13..94d2055 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/Document.java
@@ -251,7 +251,14 @@
 
 	public boolean canInsertComment(final int offset) {
 		// TODO Currently comments can only be inserted within the root element.
-		return offset > rootElement.getStartOffset() && offset <= rootElement.getEndOffset();
+		if (!(offset > rootElement.getStartOffset() && offset <= rootElement.getEndOffset())) {
+			return false;
+		}
+		final Node node = getNodeForInsertionAt(offset);
+		if (node instanceof Comment) {
+			return false;
+		}
+		return true;
 	}
 
 	public Comment insertComment(final int offset) {
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/IVexWidget.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/IVexWidget.java
index e960400..fdd50ea 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/IVexWidget.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/IVexWidget.java
@@ -65,6 +65,8 @@
 	 */
 	public void beginWork();
 
+	public boolean canInsertComment();
+
 	/**
 	 * Returns true if the clipboard has content that can be pasted. Used to enable/disable the paste action of a
 	 * containing application.
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
index f29f32b..ee27aa6 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/VexWidgetImpl.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.QualifiedName;
 import org.eclipse.vex.core.internal.core.Caret;
 import org.eclipse.vex.core.internal.core.Color;
@@ -193,6 +194,10 @@
 		beginWorkCount++;
 	}
 
+	public boolean canInsertComment() {
+		return getDocument().canInsertComment(getCaretOffset());
+	}
+
 	/**
 	 * Returns true if the given fragment can be inserted at the current caret position.
 	 * 
@@ -783,6 +788,8 @@
 	}
 
 	public Comment insertComment() throws DocumentValidationException {
+		Assert.isTrue(canInsertComment());
+
 		if (hasSelection()) {
 			deleteSelection();
 		}
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/handlers/AddCommentHandler.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/handlers/AddCommentHandler.java
index 44cdc10..b2bb232 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/handlers/AddCommentHandler.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/handlers/AddCommentHandler.java
@@ -20,7 +20,9 @@
 
 	@Override
 	public void execute(final VexWidget widget) throws ExecutionException {
-		widget.insertComment();
+		if (widget.canInsertComment()) {
+			widget.insertComment();
+		}
 	}
 
 }
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/swt/VexWidget.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/swt/VexWidget.java
index dad2363..be8951e 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/swt/VexWidget.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/swt/VexWidget.java
@@ -135,6 +135,10 @@
 		impl.beginWork();
 	}
 
+	public boolean canInsertComment() {
+		return impl.canInsertComment();
+	}
+
 	public boolean canPaste() {
 		// TODO Auto-generated method stub
 		return false;
