internal static void Specialize(Context context, RewriteInfo rewriteInfo)
        {
            rewriteInfo.ElementFieldColumns = rewriteInfo.ElementType.GetFields().Select(field =>
            {
                var declaredSymbol = field.IsImplicitlyDeclared ? field.AssociatedSymbol : field;
                if (null != declaredSymbol)
                {
                    return new { field, groupName = GetGroupName(context, declaredSymbol) }
                }
                ;
                else
                {
                    throw new TranspilationException($"Could not find associated symbol for implicitly declared field: {field}");
                }
            }).ToDictionary(x => x.field, x => x.groupName);

            rewriteInfo.Specialization = SF.ClassDeclaration($"{context.UnboundValueArrayType.Name}_{rewriteInfo.ElementType.Name}")
                                         .WithMembers(SF.List(GenerateMembers(context, rewriteInfo)));
        }
 static IEnumerable <MemberDeclarationSyntax> GenerateMembers(Context context, RewriteInfo rewriteInfo) =>
 rewriteInfo.ElementFieldColumns.GroupBy(x => x.Value).SelectMany(x => ColumnToMembers(x.Key, x.Select(y => y.Key)));