"""Create recovery_planner
Generated by Phi-Octopus Eden
2025-11-07 19:05:04.334396
"""

```python
from typing import Dict, List


class RecoveryPlanner:
    """
    A class for creating a limited error recovery planner.
    
    Attributes:
        errors: A dictionary mapping error codes to their corresponding recovery actions.
    """
    def __init__(self):
        self.errors = {
            'E001': self.recover_from_error_1,
            'E002': self.recover_from_error_2,
            'E003': self.recover_from_error_3
        }
    
    def add_recovery_action(self, error_code: str, action):
        """
        Adds a new recovery action to the planner.
        
        Args:
            error_code (str): The unique code of an error.
            action (function): A function that will be called when this error is encountered.
        """
        self.errors[error_code] = action
    
    def plan_recovery(self, error_code: str):
        """
        Plans a recovery based on the provided error code.
        
        Args:
            error_code (str): The unique code of an error to recover from.
        
        Raises:
            KeyError: If the error code is not recognized by the planner.
        """
        if error_code in self.errors:
            return self.errors[error_code]()
        else:
            raise KeyError(f"Error code {error_code} not recognized.")
    
    def recover_from_error_1(self) -> None:
        """Recover from Error E001."""
        print("Recovering from error E001...")

    def recover_from_error_2(self) -> None:
        """Recover from Error E002."""
        print("Recovering from error E002...")
    
    def recover_from_error_3(self) -> None:
        """Recover from Error E003."""
        print("Recovering from error E003...")

# Example usage
if __name__ == "__main__":
    planner = RecoveryPlanner()
    planner.add_recovery_action('E004', lambda: print("Custom recovery for E004"))
    
    try:
        # Simulate an error occurrence
        raise Exception("Simulated Error - E001")
    except Exception as e:
        if "E001" in str(e):
            planner.plan_recovery('E001')
```