private MutabilityInspectionResult InspectField(
            IFieldSymbol field,
            HashSet <ITypeSymbol> typeStack
            )
        {
            if (!field.IsReadOnly)
            {
                return(MutabilityInspectionResult.MutableField(
                           field,
                           MutabilityCause.IsNotReadonly
                           ));
            }

            var declSyntax =
                GetDeclarationSyntax <VariableDeclaratorSyntax>(field);

            if (declSyntax.Initializer != null)
            {
                return(InspectInitializer(
                           declSyntax.Initializer.Value,
                           typeStack
                           ).WithPrefixedMember(field.Name));
            }

            return(InspectType(
                       field.Type,
                       MutabilityInspectionFlags.Default,
                       typeStack
                       ).WithPrefixedMember(field.Name));
        }