public BoundExpression BuildField(SourceFieldSymbol fieldSymbol)
        {
            _rootScope = new SymbolScope((ISymbolTable)fieldSymbol.Parent);
            _currentScope = _rootScope;

            BoundExpression initializerExpression = null;

            var fieldDeclarationNode = fieldSymbol.Syntax;
            Debug.Assert(fieldDeclarationNode != null);

            //var initializerNode = fieldDeclarationNode.Initializer;
            //if (initializerNode.Value != null)
            //{
            //    var expressionBuilder = new ExpressionBinder(this, fieldSymbol, _diagnostics);
            //    initializerExpression = expressionBuilder.BindExpression(initializerNode.Value);
            //    if (initializerExpression is BoundMemberExpression)
            //        initializerExpression = expressionBuilder.TransformMemberExpression((MemberExpression) initializerExpression);
            //}

            throw new NotImplementedException();

            // TODO: Cache result.

            return initializerExpression;
        }
        private IEnumerable<FieldSymbol> BindFields(VariableDeclarationStatementSyntax variableDeclarationStatementSyntax, TypeSymbol parentType)
        {
            var declaration = variableDeclarationStatementSyntax.Declaration;
            foreach (var declarator in declaration.Variables)
            {
                var variableType = _symbolSet.ResolveType(declaration.Type, null, null);

                foreach (var arrayRankSpecifier in declarator.ArrayRankSpecifiers)
                    variableType = new ArraySymbol(variableType);

                var symbol = new SourceFieldSymbol(declarator, parentType, variableType);
                _bindingResult.AddSymbol(declarator, symbol);

                yield return symbol;
            }
        }