public void ProcessIsland(List <CollisionObject> bodies, List <PersistentManifold> manifolds, int numManifolds, int islandID)
            {
                //also add all non-contact constraints/joints for this island
                List <TypedConstraint> startConstraint = new List <TypedConstraint>();
                int numCurConstraints = 0;
                int startIndex        = 0;
                int i;

                //find the first constraint for this island
                for (i = 0; i < _sortedConstraints.Count; i++)
                {
                    if (TypedConstraint.GetConstraintIslandId(_sortedConstraints[i]) == islandID)
                    {
                        //startConstraint = &m_sortedConstraints[i];
                        startIndex = i;
                        break;
                    }
                }
                //count the number of constraints in this island
                for (; i < _sortedConstraints.Count; i++)
                {
                    if (TypedConstraint.GetConstraintIslandId(_sortedConstraints[i]) == islandID)
                    {
                        numCurConstraints++;
                    }
                }

                for (i = startIndex; i < startIndex + numCurConstraints; i++)
                {
                    startConstraint.Add(_sortedConstraints[i]);
                }

                _solver.SolveGroup(bodies, manifolds, numManifolds, startConstraint, _solverInfo, _debugDrawer);
            }