ParticleMovementHandler* _ParticleMovementHandler_New(  PARTICLEMOVEMENTHANDLER_DEFARGS  )
{
	ParticleMovementHandler* self;
	
	/* Allocate memory */
	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
	   and so should be set to ZERO in any children of this class. */
	_allocateOutgoingCountArrays                      = _ParticleCommHandler_AllocateOutgoingCountArrays;
	_allocateOutgoingParticleArrays                   = _ParticleCommHandler_AllocateOutgoingParticlesArrays;
	_freeOutgoingArrays                               = _ParticleCommHandler_FreeOutgoingArrays;
	_allocateIncomingCountArrays                      = _ParticleCommHandler_AllocateIncomingCountArrays;
	_allocateIncomingParticleArrays                   = _ParticleCommHandler_AllocateIncomingParticlesArrays;
	_freeIncomingArrays                               = _ParticleCommHandler_FreeIncomingArrays;
	_beginReceiveOfIncomingParticleCounts             = _ParticleCommHandler_BeginReceiveOfIncomingParticleCounts;
	_finishReceiveOfIncomingParticleCounts            = _ParticleCommHandler_FinishReceiveOfIncomingParticleCounts;
	_beginReceiveOfIncomingParticles                  = _ParticleCommHandler_BeginReceiveOfIncomingParticles;
	_finishReceiveOfIncomingParticlesAndUpdateIndices = ParticleMovementHandler_FinishReceiveAndUpdateShadowParticlesEnteringMyDomain;
	_sendOutgoingParticleCounts                       = _ParticleCommHandler_SendParticleTotalsInShadowCellsToNbrs;
	_beginSendingParticles                            = _ParticleCommHandler_BeginSendingParticlesInShadowCellsToNbrs;
	_confirmOutgoingSendsCompleted                    = _ParticleCommHandler_ConfirmOutgoingSendsCompleted;
	_commFunction                                     = ParticleMovementHandler_HandleParticleMovementBetweenProcs;

	self = (ParticleMovementHandler*)_ParticleCommHandler_New(  PARTICLECOMMHANDLER_PASSARGS  );
	
	/* General info */
	/* Virtual info */
	
	/* ParticleMovementHandler info */
	if( initFlag ){
		_ParticleMovementHandler_Init( self, useGlobalFallbackCommStrategy );
	}
	
	return self;
}
ParticleShadowSync* _ParticleShadowSync_New(  PARTICLESHADOWSYNC_DEFARGS  )
{
	ParticleShadowSync* self;
	
	/* Allocate memory */
	
	/* The following terms are parameters that have been passed into this function but are being set before being passed onto the parent */
	/* This means that any values of these parameters that are passed into this function are not passed onto the parent function
	   and so should be set to ZERO in any children of this class. */
	_allocateOutgoingCountArrays                      = _ParticleCommHandler_AllocateOutgoingCountArrays;
	_allocateOutgoingParticleArrays                   = NULL;
	_freeOutgoingArrays                               = _ParticleCommHandler_FreeOutgoingArrays;
	_allocateIncomingCountArrays                      = _ParticleCommHandler_AllocateIncomingCountArrays;
	_allocateIncomingParticleArrays                   = NULL;
	_freeIncomingArrays                               = _ParticleCommHandler_FreeIncomingArrays;
	_beginReceiveOfIncomingParticleCounts             = _ParticleCommHandler_BeginReceiveOfIncomingParticleCounts;
	_finishReceiveOfIncomingParticleCounts            = _ParticleShadowSync_FinishReceiveOfIncomingParticleCounts;
	_beginReceiveOfIncomingParticles                  = _ParticleShadowSync_BeginReceiveOfIncomingParticles;
	_finishReceiveOfIncomingParticlesAndUpdateIndices = _ParticleShadowSync_FinishReceiveOfIncomingParticles;
	_sendOutgoingParticleCounts                       = _ParticleShadowSync_SendParticleTotalsInShadowCellsToNbrs;
	_beginSendingParticles                            = _ParticleShadowSync_SendShadowParticles;
	_confirmOutgoingSendsCompleted                    = _ParticleCommHandler_ConfirmOutgoingSendsCompleted;
	_commFunction                                     = ParticleShadowSync_HandleParticleMovementBetweenProcs;
	_sizeOfSelf                                       = sizeof(ParticleShadowSync);
	type                                              = ParticleShadowSync_Type;
	_delete                                           = _ParticleShadowSync_Delete;
	_print                                            = _ParticleShadowSync_Print;
	_copy                                             = _ParticleShadowSync_CopyFunc;
	_defaultConstructor                               = (Stg_Component_DefaultConstructorFunction*)ParticleShadowSync_DefaultNew;
	_construct                                        = _ParticleShadowSync_AssignFromXML;
	_build                                            = _ParticleShadowSync_Build;
	_initialise                                       = _ParticleShadowSync_Initialise;
	_execute                                          = _ParticleShadowSync_Execute;
	_destroy                                          = _ParticleShadowSync_Destroy;

	self = (ParticleShadowSync*)_ParticleCommHandler_New(  PARTICLECOMMHANDLER_PASSARGS  );
	
	/* General info */
	/* Virtual info */
	
	/* ParticleShadowSync info */
	if( initFlag ){
		_ParticleShadowSync_Init( self );
	}
	
	return self;
}