private void Set32BitFilters(MetaExpectation expectation)
        {
            switch (expectation.PopCount)
            {
            case 0:
                // 2 exclusions
                var filters_0_0 = new[] { "constrained.", "sizeof" };
                expectation.FiltersCount = filters_0_0.Length;
                expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode));
                break;

            case 1:
                //TODO: review ref opcodes
                var filters_0_1 = new[] { "exec.msil.i", "exec.msil.s", "refanyval", "mkrefany" };
                expectation.FiltersCount = filters_0_1.Length;
                expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode));
                break;

            case 2:
                //TODO: review if cpobj, stobj for possible exclusions
                var filters_0_2 = new string[] { };
                expectation.FiltersCount = filters_0_2.Length;
                expectation.ExclusionFilters.Add(x => filters_0_2.Contains(x.OpCode));
                break;

            case 3:
                //no exclusion
                var filters_0_3 = new string[] { };
                expectation.FiltersCount = filters_0_3.Length;
                expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode));
                break;
            }
        }
        private void Set8BitFilters(MetaExpectation expectation)
        {
            switch (expectation.PopCount)
            {
            case 0:
                // one exclusions
                var filters_0_0 = new[] { "unaligned." };
                expectation.FiltersCount = filters_0_0.Length;
                expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode));
                break;

            case 1:
                //no exclusions
                var filters_0_1 = new string[] { };
                expectation.FiltersCount = filters_0_1.Length;
                expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode));
                break;

            case 2:
                //no exclusions
                var filters_0_2 = new string[] { };
                expectation.FiltersCount = filters_0_2.Length;
                expectation.ExclusionFilters.Add(x => filters_0_2.Contains(x.OpCode));
                break;

            case 3:
                //no opcodes, no exclusions
                var filters_0_3 = new string[] { };
                expectation.FiltersCount = filters_0_3.Length;
                expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode));
                break;
            }
        }
        private void SetFilters(MetaExpectation expectation)
        {
            switch (expectation.BitSize)
            {
            case 0:
                Set0BitFilters(expectation);
                break;

            case 8:
                Set8BitFilters(expectation);
                break;

            case 16:
                Set16BitFilters(expectation);
                break;

            case 32:
                Set32BitFilters(expectation);
                break;

            case 64:
                Set64BitFilters(expectation);
                break;
            }
        }
        private void Set0BitFilters(MetaExpectation expectation)
        {
            switch (expectation.PopCount)
            {
            case 0:
                var filters_0_0 = new[] { "arglist", "volatile.", "tail.", "rethrow", "readonly.", "endfinally", "prefix7"
                                          , "prefix6"
                                          , "prefix5"
                                          , "prefix4"
                                          , "prefix3"
                                          , "prefix2"
                                          , "prefixref" };
                expectation.FiltersCount = filters_0_0.Length;
                expectation.ExclusionFilters.Add(x => filters_0_0.Contains(x.OpCode));
                break;

            case 1:
                //TODO: review ind opcodes for exclusions
                var filters_0_1 = new[] { "localloc", "endfilter", "refanytype", "throw" };
                expectation.FiltersCount = filters_0_1.Length;
                expectation.ExclusionFilters.Add(x => filters_0_1.Contains(x.OpCode));
                break;

            case 2:
                //TODO: review ind opcodes for exclusions
                var filters_0_2 = new string[] { };
                expectation.FiltersCount = filters_0_2.Length;
                break;

            case 3:
                //TODO: review if blk opcodes can be implemented.
                var filters_0_3 = new[] { "cpblk", "initblk" };
                expectation.FiltersCount = filters_0_3.Length;
                expectation.ExclusionFilters.Add(x => filters_0_3.Contains(x.OpCode));
                break;
            }
        }