public Ast.AstDeclaration parse_Declaration(SpecObject specObject, String property)
    {
        int at = m_current;
        if (!ok())
            {
            return null;
            }

        Ast.AstBasicDeclaration dnode = parse_BasicDeclaration(specObject, property);
        if (dnode != null)
            {
            Ast.AstDeclaration node = m_ast.new AstDeclaration();
            while (true)
                {
                node.m_decls.add(dnode);
                if (!peek(TozeTokenizer.TOKEN_SEMICOLON)
                        && !this.atEndOfLine())
                    {
                    return node;
                    }
                if (peek(TozeTokenizer.TOKEN_SEMICOLON))
                    {
                    next(TozeTokenizer.TOKEN_SEMICOLON);
                    }
                if (peek(TozeTokenizer.TOKEN_EOS))
                    {
                    return node;
                    }
                dnode = parse_BasicDeclaration(specObject, property);
                if (dnode == null)
                    {
                    break;
                    }
                }
            }

        return null;
    }