propDefn = ref.propDefn;  assert ref.depth < 2; assert n >= 0; assert ref.isListRef( );  if ( propDefn.isList( ) ) { if ( ref.refType == PROPERTY ) {   refType = PROPERTY_LISTn; index[0] = n; depth = 1; } else {   assert ref.refType == PROPERTY_LISTn_MEMBER; assert ref.member[0].isList( );  refType = PROPERTY_LISTn_MEMBER_LISTn; index[0] = ref.index[0]; member[0] = ref.member[0];  index[1] = n; depth = 2; } } else {   assert ref.refType == PROPERTY_MEMBER; assert ref.member[0].isList( );  refType = PROPERTY_MEMBER_LISTn; index[0] = n; member[0] = ref.member[0]; depth = 1; }
refType = memberRef.refType; propDefn = memberRef.propDefn; member[0] = memberRef.member[0]; member[1] = memberRef.member[1]; index[0] = memberRef.index[0]; index[1] = memberRef.index[1]; depth = memberRef.depth;
	MemberRef( MemberRef ref, int n )	{		propDefn = ref.propDefn;		assert ref.depth < 2;		assert n >= 0;		assert ref.isListRef( );		if ( propDefn.isList( ) )		{			if ( ref.refType == PROPERTY )			{				// property.list[n]				refType = PROPERTY_LISTn;				index[0] = n;				depth = 1;			}			else			{				// property.list[n].member.list[n]				assert ref.refType == PROPERTY_LISTn_MEMBER;				assert ref.member[0].isList( );				refType = PROPERTY_LISTn_MEMBER_LISTn;				index[0] = ref.index[0];				member[0] = ref.member[0];				index[1] = n;				depth = 2;			}		}		else		{			// property.member.list[n]			assert ref.refType == PROPERTY_MEMBER;			assert ref.member[0].isList( );			refType = PROPERTY_MEMBER_LISTn;			index[0] = n;			member[0] = ref.member[0];			depth = 1;		}	}