private static void insertDebugBreak(Template t, Breakpoint breakpoint) {
   TemplateElement te = findTemplateElement(t.getRootTreeNode(), breakpoint.getLine());
   if (te == null) {
     return;
   }
   TemplateElement parent = (TemplateElement) te.getParent();
   DebugBreak db = new DebugBreak(te);
   // TODO: Ensure there always is a parent by making sure
   // that the root element in the template is always a MixedContent
   // Also make sure it doesn't conflict with anyone's code.
   parent.setChildAt(parent.getIndex(te), db);
 }
 public int getIndex(TemplateElement node) {
   if (nestedBlock instanceof MixedContent) {
     return nestedBlock.getIndex(node);
   }
   if (nestedBlock != null) {
     if (node == nestedBlock) {
       return 0;
     }
   } else {
     for (int i = 0; i < regulatedChildCount; i++) {
       if (regulatedChildBuffer[i].equals(node)) {
         return i;
       }
     }
   }
   return -1;
 }
 private void removeDebugBreak(Template t, Breakpoint breakpoint) {
   TemplateElement te = findTemplateElement(t.getRootTreeNode(), breakpoint.getLine());
   if (te == null) {
     return;
   }
   DebugBreak db = null;
   while (te != null) {
     if (te instanceof DebugBreak) {
       db = (DebugBreak) te;
       break;
     }
     te = (TemplateElement) te.getParent();
   }
   if (db == null) {
     return;
   }
   TemplateElement parent = (TemplateElement) db.getParent();
   parent.setChildAt(parent.getIndex(db), (TemplateElement) db.getChildAt(0));
 }