diff --git a/src/syntax_tree.rs b/src/syntax_tree.rs
index 410fb32567b67943c95c4b4aa7b2770bf9d2d8dc..5a7a0f85db7c3bc51ec42884fe9a5751735c973f 100644
--- a/src/syntax_tree.rs
+++ b/src/syntax_tree.rs
@@ -90,7 +90,8 @@ impl<T> SyntaxTree<T> {
             if predicate(self) {
                 return Some(self)
             } else {
-                for child in &mut self.children{
+                let mut children = self.children_mut();
+                for child in children{
                     if(child.find_node_mut(predicate).is_some()){
                         return child.find_node_mut(predicate);
                     }
@@ -113,6 +114,10 @@ impl<T> SyntaxTree<T> {
     pub fn children(&self) -> &Vec<SyntaxTree<T>> {
         &self.children
     }
+
+    pub fn children_mut(&mut self) -> &mut Vec<SyntaxTree<T>> {
+        &mut self.children
+    }
 }
 
 impl<T: Display> SyntaxTree<T> {