code: def _extract_namespace_ast_node(self, desc):
          
          if len(desc) == 0 or not isinstance(desc[0], AstNamespace):
              if self._debug:
                  self._logger.info('Description: %r', desc)
              raise InvalidSpec('First declaration in a stone must be '
                                'a namespace. Possibly caused by preceding '
                                'errors.', desc[0].lineno, desc[0].path)
          for item in desc[1:]:
              if isinstance(item, AstNamespace):
                  raise InvalidSpec('Only one namespace declaration per file.',
                                    item[0].lineno, item[0].path)
          return desc.pop(0)
docs: Checks that the namespace is declared first in the spec, and that only
          one namespace is declared.
  
          Args:
              desc (List[stone.stone.parser.ASTNode]): All AST nodes in a spec
                  file in the order they were defined.
  
          Return:
              stone.frontend.ast.AstNamespace: The namespace AST node.