public void update()
	{
		// This section ensures that we have the right children, without constantly removing/adding them, 
		//  which causes user-unfriendly behaviors (unselection etc)
		{
			Set<Component> text_area_components = new HashSet<Component>();
			
			for(Component c : text_area.getComponents())
				text_area_components.add(c);
			
			List<GenericTreeNode<SyntaxTreeElement>> children = construct.node.getChildren();
			
			for(int i = 0; i < children.size(); i++) {
				Construct child_construct = children.get(i).getData().construct;
				if(child_construct != null) {
					Component child_component = editorsByConstructs.get(child_construct).get().getComponent();
					
					if(!text_area_components.contains(child_component))
						text_area.add(child_component);
					
					text_area_components.remove(child_component);
				}
			}
			
			for(Component c : text_area_components)
				text_area.remove(c);
		}
		
		String current_text = my_text();
		
		String area_text = text_area.getText();
		
		System.out.println("\"" + current_text + "\" vs \"" + area_text + "\"");
		
		if(!current_text.equals(area_text))
			text_area.setText(my_text());
		
		super.update();
	}