Combine the butter and flour in the bowl of a food processor and process until the chunks of butter are broken up and the mixture has taken on the consistency of wet sand, about 30 seconds. Transfer the butter-flour mixture to a large mixing bowl and add the salt, cream cheese, and sour cream. Mix the ingredients together vigorously with your hands, breaking up the cream cheese and working it into the f lour with your fingers until the mixture is crumbly and only pea-size chunks of the cream cheese remain. Turn out the dough onto a sheet of aluminum foil, press it down slightly into a thick disk, and wrap it very tightly in the foil. Refrigerate it for at least 20 minutes or overnight. Meanwhile, make the filling. Combine the cherries, sugar, water, and salt in a medium saucepan and bring to a boil over medium-high heat; reduce the heat and simmer until syrupy, about 5 minutes. Remove from the heat and add the almond extract. Let the mixture rest until it`s cool enough to handle. Place the almonds in the bowl of a food processor and process until crushed, about 10 seconds. Transfer the almonds to a bowl and add the reserved cherry mixture to the food processor; process until the mixture has a jam-like consistency, scraping down the sides of the machine as necessary. Add the almonds back in and process for a few seconds, until all the ingredients are thoroughly combined. The filling can be stored in the freezer for up to 2 months. Combine all the filling ingredients in the bowl of a food processor and process until crumbly. The filling can be stored in the freezer for up to 2 months. Combine all the filling ingredients in a medium saucepan and bring them to a boil over medium-high heat; reduce the heat and simmer for 5 minutes. Set the mixture aside until it is just cool enough to handle, then transfer it to the bowl of a food processor and process until smooth. Refrigerate the filling until it`s completely cooled before using. The filling can be stored in the freezer for up to 2 months. Preheat the oven to 350°F. Line a 10-by-15-inch baking sheet with parchment paper, grease it with oil or cooking spray, and sprinkle it with a small handful of decorative sugar. Unwrap the dough and divide it into 2 equal-size portions. On a well-floured surface, press and work one of the dough portions into a ball, then press the ball into a disk that`s about 3/4 inch thick. The dough will be very firm at first and may crack around the edges, so keep working it and bringing the cracks together until you have a smooth-sided disk, adding more flour as needed to keep your hands from sticking to the dough. Roll out the dough into a 10- to 12-inch circle of even thickness. Fold the circle into a half moon and use a knife or dough cutter to trim away any uneven or protruding edges, then unfold the dough so it`s a circle again. If you`re using the chocolate-hazelnut filling, brush a little of the egg wash over the dough. Use a spatula to spread a heaping cup of the filling of your choice evenly over the dough. Then use a dough cutter or pizza cutter to cut the circle into 16 equal-size wedges, just as you would a pizza. Then, working with one wedge at a time, roll a wedge up to make the rugelach, starting with the wide end and rolling toward the pointy end. Transfer the rugelach to the prepared baking sheet. Repeat with the remaining dough and filling. Brush the tops of the rugelach with the egg wash, sprinkle lightly with more decorative sugar, and bake, rotating the tray 180 degrees halfway through cooking, until the pastries are light golden brown, 15 to 20 minutes.