input: from typing import Callable
  
  def convert_python_to_csharp(python_func: Callable) -> str:
      """ Converts a given Python function to a C# function.
      >>> convert_python_to_csharp(lambda x, y: x * power(x, y - 1) if y != 0 else 1)
      'public int Power(int x, int y) { if (y == 0) { return 1; } else { return x * Power(x, y - 1); } }'
      """
output:     import inspect
      import re
  
      source = inspect.getsource(python_func)
      source = re.sub(r'lambda\s+(.*?):\s+(.*)', r'public int Func(\1) { return \2; }', source)
      source = re.sub(r'if\s+(.*?):\s+(.*?)\s+else:\s+(.*)', r'if (\1) { \2 } else { \3 }', source)
      source = re.sub(r'def\s+(.*?)\((.*?)\):\s+(.*)', r'public int \1(\2) { \3 }', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\(', r'\1 (', source)
      source = re.sub(r'\s+', ' ', source)
      source = re.sub(r'return\s+(.*)', r'return \1;', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\+\s*1', r'\1++', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\-\s*1', r'\1--', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*/\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 /= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*%\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 %= \2', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 = Math.Pow(\1, \2)', source)
      source = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\*\s*([a-zA-Z_][a-zA-Z0-9_]*|\d+)', r'\1 *= \2', source)
      source = re.