private BlockDeclNode VariableDecl() throws SyntaxException {
        try {
            nextToken();

            if (iterator.current().type().is(Token.Type.LEFT_BRACKET)) {
                LeftBracket();
                BlockDeclNode decls = new BlockDeclNode();
                decls.addChildren(VariableSpec());
                Semicolon();

                while (iterator.current().type().is(Token.Type.IDENTIFIER)) {
                    decls.addChildren(VariableSpec());
                    Semicolon();
                }

                RightBracket();

                return decls;
            } else {
                return new BlockDeclNode(VariableSpec());
            }
        } catch(SyntaxException ex) {
            throw ex;
        } catch(Exception ex) {
            throw (NonAnalysisException)new NonAnalysisException(ex)
                    .initPosition(iterator.current().coordinates().starting())
                    .Log("ru.bmstu.iu9.compiler.syntax");
        }
    }