// Decompiled with JetBrains decompiler
// Type: Borland.Delphi.System.TFinalObject
// Assembly: Project1, Version=1.0.1859.4414, Culture=neutral, PublicKeyToken=null
// MVID: 387A0727-86C4-4744-A694-CF2F2E0F060B
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Trojan.MSIL.WMC.10-fd5e584bd80ce552c9df6b54aeb5b165ab53ae3852db7b074873a0872cf5dc56.exe

using Borland.Delphi.System.;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace Borland.Delphi.System
{
  internal class TFinalObject
  {
    public override void Finalize()
    {
      if (Unit.OnProcessExit != null)
        Unit.OnProcessExit();
      // ISSUE: explicit finalizer call
      base.Finalize();
    }

    public void Free() => TObjectHelper.Free((object) this);

    [return: TAliasType(typeof (TClass))]
    public \u0040TClass ClassType() => TObjectHelper.ClassType((object) this);

    public static string ClassName([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self) => TObjectHelper.ClassName((\u0040TClass) Self);

    public static bool ClassNameIs([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self, [In] string Name) => TObjectHelper.ClassNameIs((\u0040TClass) Self, Name);

    [return: TAliasType(typeof (TClass))]
    public static \u0040TClass ClassParent([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self) => TObjectHelper.ClassParent((\u0040TClass) Self);

    public static Type ClassInfo([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self) => TObjectHelper.ClassInfo((\u0040TClass) Self);

    public static bool InheritsFrom([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self, \u0040TClass AClass) => TObjectHelper.InheritsFrom((\u0040TClass) Self, AClass);

    public static MemberInfo MethodAddress(
      [TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self,
      [In] string AName)
    {
      return TObjectHelper.MethodAddress((\u0040TClass) Self, AName);
    }

    public static string MethodName([TAliasType(typeof (TFinalObject))] TFinalObject.\u0040MetaTFinalObject Self, MemberInfo ACode) => TObjectHelper.MethodName((\u0040TClass) Self, ACode);

    public object FieldAddress([In] string AName) => TObjectHelper.FieldAddress((object) this, AName);

    public void Dispatch(ref object Message) => TObjectHelper.Dispatch((object) this, ref Message);

    static TFinalObject() => RuntimeHelpers.RunClassConstructor(__typeref (Unit));

    [CLSCompliant(false)]
    [ComVisible(false)]
    protected internal class \u0040MetaTFinalObject : \u0040TClass
    {
      public static TFinalObject.\u0040MetaTFinalObject \u0040Instance = new TFinalObject.\u0040MetaTFinalObject();

      public \u0040MetaTFinalObject() => this.FInstanceTypeHandle = __typeref (TFinalObject);

      static \u0040MetaTFinalObject() => RuntimeHelpers.RunClassConstructor(__typeref (TFinalObject));

      public virtual object \u0040Create() => (object) new TFinalObject();
    }
  }
}
