code: public NamespaceHeader parseNamespace(String resourceLocation,
              File namespaceFile) throws IOException,
              BELDataMissingPropertyException,
              BELDataConversionException {
          if (namespaceFile == null) {
              throw new InvalidArgument("namespaceFile", namespaceFile);
          }
  
          if (!namespaceFile.exists()) {
              throw new InvalidArgument("namespaceFile does not exist");
          }
  
          if (!namespaceFile.canRead()) {
              throw new InvalidArgument("namespaceFile cannot be read");
          }
  
          Map<String, Properties> blockProperties = parse(namespaceFile);
  
          NamespaceBlock nsblock = NamespaceBlock.create(resourceLocation,
                  blockProperties.get(NamespaceBlock.BLOCK_NAME));
  
          AuthorBlock authorblock = AuthorBlock.create(resourceLocation,
                  blockProperties.get(AuthorBlock.BLOCK_NAME));
  
          CitationBlock citationBlock = CitationBlock.create(resourceLocation,
                  blockProperties.get(CitationBlock.BLOCK_NAME));
  
          ProcessingBlock processingBlock = ProcessingBlock.create(
                  resourceLocation,
                  blockProperties.get(ProcessingBlock.BLOCK_NAME));
  
          return new NamespaceHeader(nsblock, authorblock, citationBlock,
                  processingBlock);
      }
docs: Parses the namespace {@link File} into a {@link NamespaceHeader} object.
  
  @param namespaceFile {@link File}, the namespace file, which cannot be
  null, must exist, and must be readable
  @return {@link NamespaceHeader}, the parsed namespace header
  @throws IOException Thrown if an IO error occurred reading the
  <tt>namespaceFile</tt>
  @throws BELDataConversionException
  @throws BELDataMissingPropertyException
  @throws InvalidArgument Thrown if the <tt>namespaceFile</tt> is null,
  does not exist, or cannot be read