defn = root.getPropertyDefn( Module.PROPERTY_BINDINGS_PROP );
defn = root.getPropertyDefn( IModuleModel.PROPERTY_BINDINGS_PROP );
	public void setPropertyBinding( String propName, String value )			throws SemanticException	{		// check whether the property is defined on this element		ElementPropertyDefn defn = (ElementPropertyDefn) getPropertyDefn( propName );		if ( defn == null )			throw new SemanticError( getElement( ), new String[]{propName},					SemanticError.DESIGN_EXCEPTION_INVALID_PROPERTY_NAME );		if ( Module.PROPERTY_BINDINGS_PROP.equals( defn.getName( ) ) )			return;		// check the element is in the id-map of the root module		Module root = getElement( ).getRoot( );		if ( root == null )			throw new SemanticError( getElement( ),					SemanticError.DESIGN_EXCEPTION_PROPERTY_BINDING_FORBIDDEN );		assert root.getElementByID( getID( ) ) == getElement( );		ArrayList bindingList = (ArrayList) root.getLocalProperty( root,				Module.PROPERTY_BINDINGS_PROP );		PropertyBinding binding = root.findPropertyBinding( getElement( ),				propName );		// if the binding is not set, and the new value is null, returns		if ( binding == null && value == null )			return;		if ( bindingList == null )		{			assert value != null;			bindingList = new ArrayList( );			root.setProperty( Module.PROPERTY_BINDINGS_PROP, bindingList );		}		defn = root.getPropertyDefn( Module.PROPERTY_BINDINGS_PROP );		assert defn != null;		PropertyCommand cmd = new PropertyCommand( module, root );		if ( value == null && binding != null )		{			// maskValue is null, remove the item from the structure list.			cmd.removeItem( new CachedMemberRef( defn ), bindingList					.indexOf( binding ) );		}		else		{			/*			 * If the property has no binding related to, adds a new binding			 * item into the structure list.			 */			if ( binding == null )			{				binding = new PropertyBinding( );				binding.setName( propName );				binding.setID( getID( ) );				binding.setValue( value );				cmd.addItem( new CachedMemberRef( defn ), binding );			}			else			{				// changes the binding value.				MemberRef memberRef = new CachedMemberRef( defn, bindingList						.indexOf( binding ), PropertyBinding.VALUE_MEMBER );				cmd.setMember( memberRef, value );			}		}	}