ReferencableStructure libStructure = libReference
ReferencableStructure libStructure = libRef
	protected Object clone( ) throws CloneNotSupportedException	{		ReferencableStructure struct = (ReferencableStructure) super.clone( );		struct.libReference = null;		struct.clients = new ArrayList( );		struct.clientStructures = new ArrayList( );		// retrieve the member value from the lib reference		Iterator propIter = getDefn( ).getPropertyIterator( );		while ( propIter.hasNext( ) )		{			PropertyDefn prop = (PropertyDefn) propIter.next( );			// if the structure has the local value already or the member is			// "libReference", then return			if ( struct.getLocalProperty( null, prop ) != null					|| LIB_REFERENCE_MEMBER.equals( prop.getName( ) ) )				continue;			StructRefValue libRef = this.libReference;			while ( libRef != null )			{				ReferencableStructure libStructure = libReference						.getTargetStructure( );				Object value = libStructure.getLocalProperty( null, prop );				if ( value != null )					struct.setProperty( prop, value );				libRef = (StructRefValue) libStructure.getLocalProperty( null, LIB_REFERENCE_MEMBER );			}		}		return struct;	}