// Token: 0x0600149F RID: 5279 RVA: 0x0006D630 File Offset: 0x0006B830
        private static DiscriminatedUnionConverter.Union CreateUnion(Type t)
        {
            MethodCall <object, object> preComputeUnionTagReader = FSharpUtils.Instance.PreComputeUnionTagReader;
            object target = null;

            object[] array = new object[2];
            array[0] = t;
            DiscriminatedUnionConverter.Union union         = new DiscriminatedUnionConverter.Union((FSharpFunction)preComputeUnionTagReader(target, array), new List <DiscriminatedUnionConverter.UnionCase>());
            MethodCall <object, object>       getUnionCases = FSharpUtils.Instance.GetUnionCases;
            object target2 = null;

            object[] array2 = new object[2];
            array2[0] = t;
            foreach (object obj in (object[])getUnionCases(target2, array2))
            {
                int            tag    = (int)FSharpUtils.Instance.GetUnionCaseInfoTag(obj);
                string         name   = (string)FSharpUtils.Instance.GetUnionCaseInfoName(obj);
                PropertyInfo[] fields = (PropertyInfo[])FSharpUtils.Instance.GetUnionCaseInfoFields(obj, new object[0]);
                MethodCall <object, object> preComputeUnionReader = FSharpUtils.Instance.PreComputeUnionReader;
                object   target3 = null;
                object[] array4  = new object[2];
                array4[0] = obj;
                FSharpFunction fieldReader = (FSharpFunction)preComputeUnionReader(target3, array4);
                MethodCall <object, object> preComputeUnionConstructor = FSharpUtils.Instance.PreComputeUnionConstructor;
                object   target4 = null;
                object[] array5  = new object[2];
                array5[0] = obj;
                DiscriminatedUnionConverter.UnionCase item = new DiscriminatedUnionConverter.UnionCase(tag, name, fields, fieldReader, (FSharpFunction)preComputeUnionConstructor(target4, array5));
                union.Cases.Add(item);
            }
            return(union);
        }
 public UnionCase(int tag, string name, PropertyInfo[] fields, FSharpFunction fieldReader, FSharpFunction constructor)
 {
     Tag         = tag;
     Name        = name;
     Fields      = fields;
     FieldReader = fieldReader;
     Constructor = constructor;
 }
 public Union(FSharpFunction tagReader, List <UnionCase> cases)
 {
     TagReader = tagReader;
     Cases     = cases;
 }
 // Token: 0x0600192F RID: 6447 RVA: 0x0007C89C File Offset: 0x0007AA9C
 public Union(FSharpFunction tagReader, List <DiscriminatedUnionConverter.UnionCase> cases)
 {
     this.TagReader = tagReader;
     this.Cases     = cases;
 }