final public boolean replaceChild(Construct child, Construct newCon) {
		List<Construct> childConstructs = new LinkedList<Construct>();
		getAllChildConstructs(childConstructs, child);
		
		// Do the construct replacement here, if the replacement
		// is successful, then we need to cleanup all editors related
		// to construct we have just replaced
		if(construct.replaceChild(child, newCon)) {
			for(Construct constructForEditorDeletion : childConstructs) {
				WeakReference<ConstructEditor> editor = mBoundEditorStore.get(constructForEditorDeletion);
				if(editor != null && editor.get() != null) { 
					editor.get().delete();
				}
			}
		}
	
		return true;
	}