I have not done a any work dynamically creating regions, but as a first diagnostic I would try to create a variable to hold each point something like
var point1 = CollisionRegion.GetPoint(1);
if (point1 == null)
{
blah, blah}
then you can be really sure if your regions points are being stored.
Again this may be my ignorance, but I have often got confused between the different functionality in an entity region and a region/region