String label = ModelMessages .getMessage( MessageConstants.CHANGE_ITEM_MESSAGE ); stack.startTrans( label );
makeLocalCompositeValue( ref );
	public void setMember( MemberRef ref, Object value )			throws SemanticException	{		PropertyDefn memberDefn = ref.getMemberDefn( );		PropertyDefn propDefn = ref.getPropDefn( );		assert propDefn != null;		assertExtendedElement( design, element, propDefn );		assert memberDefn != null;		value = memberDefn.validateValue( design, value );		// Ignore duplicate values, even if the current value is not local.		// This avoids making local copies if the user enters the existing		// value, or if the UI gets a bit sloppy.		Object oldValue = ref.getValue( design, element );		if ( oldValue == null && value == null )			return;		if ( oldValue != null && value != null && oldValue.equals( value ) )			return;		// The values differ. Make the change.		ActivityStack stack = getActivityStack( );		String label = ModelMessages				.getMessage( MessageConstants.CHANGE_ITEM_MESSAGE );		stack.startTrans( label );		MemberRecord record = new MemberRecord( design, element, ref, value );		stack.execute( record );		stack.commit( );	}