new internal void Initialize( btCollisionAlgorithmConstructionInfo ci, btCollisionObjectWrapper body0Wrap, btCollisionObjectWrapper body1Wrap, bool isSwapped )
		{
			base.Initialize( ci, body0Wrap, body1Wrap, isSwapped );

			m_childCollisionAlgorithmCache = new btHashedSimplePairCache();

			btCollisionObjectWrapper col0ObjWrap = body0Wrap;
			Debug.Assert( col0ObjWrap.getCollisionShape().isCompound() );

			btCollisionObjectWrapper col1ObjWrap = body1Wrap;
			Debug.Assert( col1ObjWrap.getCollisionShape().isCompound() );

			btCompoundShape compoundShape0 = (btCompoundShape)( col0ObjWrap.getCollisionShape() );
			m_compoundShapeRevision0 = compoundShape0.getUpdateRevision();

			btCompoundShape compoundShape1 = (btCompoundShape)( col1ObjWrap.getCollisionShape() );
			m_compoundShapeRevision1 = compoundShape1.getUpdateRevision();


		}
			internal btCompoundCompoundLeafCallback( btCollisionObjectWrapper compound1ObjWrap,
											btCollisionObjectWrapper compound0ObjWrap,
											btDispatcher dispatcher,
											btDispatcherInfo dispatchInfo,
											btManifoldResult resultOut,
											btHashedSimplePairCache childAlgorithmsCache,
											btPersistentManifold sharedManifold )
			{
				m_numOverlapPairs = ( 0 );
				m_compound0ColObjWrap = ( compound1ObjWrap );
				m_compound1ColObjWrap = ( compound0ObjWrap );
				m_dispatcher = ( dispatcher );
				m_dispatchInfo = ( dispatchInfo );
				m_resultOut = ( resultOut );
				m_childCollisionAlgorithmCache = ( childAlgorithmsCache );
				m_sharedManifold = ( sharedManifold );

			}
		internal override void Cleanup()
		{
			removeChildAlgorithms();
			BulletGlobals.CompoundCompoundCollisionAlgoritmPool.Free( this );
			m_childCollisionAlgorithmCache = null;
		}