protected void removePlaceholders(boolean removeNonOptional) { 
		// Iterate over all the children, removing any placeholders
		LinkedList<Construct> deletingConstructs = new LinkedList<Construct>();
		for(Construct construct : this.children) { 
			if(construct.getClass().equals(PlaceholderConstruct.class)) {
				PlaceholderConstruct placeholderConstruct = (PlaceholderConstruct) construct;
				if(placeholderConstruct.getDescriptor().isOptional() || removeNonOptional) {
					deletingConstructs.add(construct);
				}
			}
		}

		// Now remove the identified children
		for(Construct deleted : deletingConstructs) { 
			deleted.delete();
		}
		
		if(mState != null) { 
			mState.mPlaceholdersAdded = false;
		
			if(mState.mPlaceholdersAddedOptionals && removeNonOptional) 
				mState.mPlaceholdersAddedOptionals = false;
		}
	}