This paper presents a multi-contact approach to generalized humanoid fall mitigation planning that unifies inertial shaping, protective stepping, and hand contact strategies. The planner optimizes both the contact sequence and the robot state trajectories. A high-level tree search is conducted to iteratively grow a contact transition tree. At each edge of the tree, trajectory optimization is used to calculate robot stabilization trajectories that produce the desired contact transition while minimizing kinetic energy. Also, at each node of the tree, the optimizer attempts to find a self-motion (inertial shaping movement)to eliminate kinetic energy. This paper also presents an efficient and effective method to generate initial seeds to facilitate trajectory optimization. Experiments demonstrate show that our proposed algorithm can generate complex stabilization strategies for a simulated planar robot under varying initial pushes and environment shapes.