192    {
  193        typeHandle = default(IntPtr);
  194        methodHandle = default(IntPtr);
  195        fieldHandle = default(IntPtr);
  198        {
  199            throw new InvalidProgramException();
  200        }
  201        if (
obj is RuntimeTypeHandle)
 
  202        {
  203            typeHandle = ((RuntimeTypeHandle)
obj).Value;
 
  204            return;
  205        }
  206        if (
obj is RuntimeMethodHandle)
 
  207        {
  208            methodHandle = ((RuntimeMethodHandle)
obj).Value;
 
  209            return;
  210        }
  211        if (
obj is RuntimeFieldHandle)
 
  212        {
  213            fieldHandle = ((RuntimeFieldHandle)
obj).Value;
 
  214            return;
  215        }
  216        DynamicMethod dynamicMethod = 
obj as DynamicMethod;
 
  217        if (dynamicMethod != null)
  218        {
  219            methodHandle = dynamicMethod.GetMethodDescriptor().Value;
  220        }
  221        else if (
obj is GenericMethodInfo genericMethodInfo)
 
  222        {
  223            methodHandle = genericMethodInfo.m_methodHandle.Value;
  224            typeHandle = genericMethodInfo.m_context.Value;
  225        }
  226        else if (
obj is GenericFieldInfo genericFieldInfo)
 
  227        {
  228            fieldHandle = genericFieldInfo.m_fieldHandle.Value;
  229            typeHandle = genericFieldInfo.m_context.Value;
  230        }
  231        else if (
obj is VarArgMethod varArgMethod)
 
  232        {
  233            if (varArgMethod.m_dynamicMethod == null)
  234            {
  235                methodHandle = varArgMethod.m_method.MethodHandle.Value;
  236                typeHandle = varArgMethod.m_method.GetDeclaringTypeInternal().GetTypeHandleInternal().Value;
  237            }
  238            else
  239            {
  240                methodHandle = varArgMethod.m_dynamicMethod.GetMethodDescriptor().Value;
  241            }
  242        }
  243    }