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>();
			
			if(text_area == null)// FIXME: Why does this happen? InvokeLater?
				return;
			
			for(Component c : text_area.getComponents())
				text_area_components.add(c);
			
			for(Construct child : construct.children)
			{
				if(mDocument.editorsFromConstruct(child) == null) {
					mDocument.editorsFromConstruct(child); 
				}
				
				ConstructEditor parent_editor = mDocument.editorsFromConstruct(child);
				if(parent_editor == null) { 
					System.err.println("WeakReference<ConstructEditor> for Child (" + child.type + ") not found");
					continue;
				}

				
				Component child_component = parent_editor.get_component();
				
				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 + "\"");
		
		//System.out.println("current_text: " + current_text);
		
		if(!current_text.equals(area_text))
			text_area.setText(my_text());
		
		super.update();
	}