I am having trouble with the basic logic of this solution:
Xna: Splitting one large texture into an array of smaller textures
in respect to my specific problem (specifically, I'm looking at the second answer.)
How can I use my source rectangle that I already use for drawing to create a new Texture2D?
spriteBatch.Draw(CurrentMap.CollisionSet, currentMap.CellScreenRectangle(x, y),
      CurrentMap.TileSourceRectangle(currentMap.MapCells[x, y].TileDepths[4]),
      Color.FromNonPremultiplied(0,0,0, 45), 0.0f, Vector2.Zero, SpriteEffects.None, 0.91f);
I know I want a method that I started so:  
//In Update Method of say the player's character.
Texture2D CollisionTexture = ExtractTexture(MapManager.CurrentMap.CollisionSet, MapManager.TileWidth, MapManager.TileHeight);
// In MapManager Class who knows everything about tiles that make up a level. 
    public Texture2D ExtractTexture(Texture2D original, int partWidth, int partheight, MapTile mapCell)
            {
                var dataPerPart = partWidth * partheight;
                Color[] originalPixelData = new Color[original.Width * original.Height];
                original.GetData<Color>(originalPixelData);
                Color[] newTextureData = new Color[dataPerPart];
                original.GetData<Color>(0, CurrentMap.TileSourceRectangle(mapCell.TileDepths[4]), originalPixelData,  0, originalPixelData.Count());
                Texture2D outTexture = new Texture2D(original.GraphicsDevice, partWidth, partheight);
            }
I think the problem is I'm just not understanding the overload of Texture2D.GetData<
Part of my concern is creating an array of the whole texture in the first place.  Can I target the original texture and create an array of colors for copying based on what I already get from the method TileSourceRecatangle(int)?