SimplePropertyListRecord record = new SimplePropertyListRecord( element, prop, list, value, list.size( ) );
MemberRef insertRef = new CachedMemberRef( ref, list.size( ) ); PropertyListRecord record = new PropertyListRecord( element, insertRef, insertRef.getList( module, element ), item );
	public void addItem( ElementPropertyDefn prop, Object item )			throws SemanticException	{		assert prop != null;		if ( item == null )			return;		// this method is not called for structure list property		assert !( item instanceof IStructure );		assertExtendedElement( module, element, prop );		// check the property type is list and do some validation about the item		checkListProperty( prop );		Object value = checkItem( prop, item );		// check whether the value in the list is unique when the sub-type is		// element reference value		List list = element.getListProperty( module, prop.getName( ) );		element.checkSimpleList( module, prop, list, value );		ActivityStack stack = getActivityStack( );		stack.startTrans( ModelMessages				.getMessage( MessageConstants.ADD_ITEM_MESSAGE ) );		makeLocalCompositeValue( prop );		list = element.getListProperty( module, prop.getName( ) );		if ( null == list )		{			list = new ArrayList( );			PropertyRecord propRecord = new PropertyRecord( element, prop, list );			stack.execute( propRecord );		}		SimplePropertyListRecord record = new SimplePropertyListRecord(				element, prop, list, value, list.size( ) );		stack.execute( record );		if ( value instanceof ElementRefValue )		{			ElementRefValue refValue = (ElementRefValue) value;			if ( refValue.isResolved( ) )			{				ElementRefRecord refRecord = new ElementRefRecord( element,						refValue.getTargetElement( ), prop.getName( ), true );				stack.execute( refRecord );			}		}		stack.commit( );	}