public void deleteSelected() {
		ConstructEditor deleteMeEditor = mConstructSelector.getSelected();
		

		if(deleteMeEditor.construct.isSoleDependantConstruct()) { 
			Construct parentConstruct = mConstructSelector.getSelected().construct.parent;
			deleteMeEditor = mDocument.editorsFromConstruct(parentConstruct);
		}

		if(deleteMeEditor != null && 
				deleteMeEditor.getParent() != null) 
		{
			// Determine the index of the child being deleted
			// in case we need it for selection later on
			ConstructEditor parentConstruct = deleteMeEditor.getParent(); 
			List<Construct> parentChildren = parentConstruct.construct.children;
			int childIndex = parentChildren.indexOf(deleteMeEditor.construct);
			
			// Keep track of how many siblings currently exist
			int siblingsCount = parentConstruct.construct.children.size();			
			if(deleteMeEditor.delete()) {
				deleteMeEditor.getParent().update();
				mConstructSelector.getSelected().update();
				
				int newSiblingsCount = parentConstruct.construct.children.size();
    			if(siblingsCount != newSiblingsCount) {
    				// Child was removed, move the selection
					if(mConstructSelector.SelectAdjacentConstruct(false) == false) {
						mConstructSelector.Select(Construct.SelectionCause.SelectedAfterDeletingChild, deleteMeEditor.getParent());
					}
    			} else {
    				// 'Deleted' but children count didn't change, this implies
    				// that the child was actually replaced (ie, placeholder restoration)
    				Construct replacingConstruct = deleteMeEditor.getParent().construct.children.get(childIndex);
    				ConstructEditor replacingEditor = mDocument.editorsFromConstruct(replacingConstruct);
    				mConstructSelector.Select(Construct.SelectionCause.SelectedInPlaceOfDeletedConstruct, replacingEditor);
    			}
			} else { 
				deleteMeEditor.getParent().update();
			}
		}
		
		if(deleteMeEditor.getParent() != null) { 
			deleteMeEditor.getParent().update();
		}
		
		requestTopFocus();
	}