private static ImmutableArray <bool> GetFlags(DynamicLocalInfo bucket)
        {
            int   flagCount = bucket.FlagCount;
            ulong flags     = bucket.Flags;
            var   builder   = ArrayBuilder <bool> .GetInstance(flagCount);

            for (int i = 0; i < flagCount; i++)
            {
                builder.Add((flags & (1u << i)) != 0);
            }
            return(builder.ToImmutableAndFree());
        }
        private static BlobHandle SerializeDynamicLocalBlob(MetadataBuilder metadataBuilder, DynamicLocalInfo dynamicInfo)
        {
            Debug.Assert(dynamicInfo.FlagCount > 0);
            Debug.Assert(dynamicInfo.Flags != 0);

            var builder = new BlobBuilder();

            int   c     = dynamicInfo.FlagCount - 1;
            ulong flags = dynamicInfo.Flags;

            // trim trailing 0s:
            while ((flags & (1u << c)) == 0)
            {
                c--;
            }

            int b     = 0;
            int shift = 0;

            for (int i = 0; i <= c; i++)
            {
                bool bit = (flags & (1u << c)) != 0;

                if (bit)
                {
                    b |= 1 << shift;
                }

                if (shift == 7)
                {
                    builder.WriteByte((byte)b);
                    b     = 0;
                    shift = 0;
                }
                else
                {
                    shift++;
                }
            }

            if (b != 0)
            {
                builder.WriteByte((byte)b);
            }

            return(metadataBuilder.GetOrAddBlob(builder));
        }