code: public AnnotationHeader parseAnnotation(String resourceLocation,
              File annotationFile) throws IOException,
              BELDataMissingPropertyException,
              BELDataConversionException, BELDataInvalidPropertyException {
          if (annotationFile == null) {
              throw new InvalidArgument("annotationFile", annotationFile);
          }
  
          if (!annotationFile.exists()) {
              throw new InvalidArgument("annotationFile does not exist");
          }
  
          if (!annotationFile.canRead()) {
              throw new InvalidArgument("annotationFile cannot be read");
          }
  
          Map<String, Properties> blockProperties = parse(annotationFile);
  
          AnnotationBlock annotationBlock =
                  AnnotationBlock.create(resourceLocation,
                          blockProperties.get(AnnotationBlock.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 AnnotationHeader(annotationBlock, authorblock,
                  citationBlock,
                  processingBlock);
      }
docs: Parses the annotation {@link File} into a {@link AnnotationHeader} object.
  
  @param annotationFile {@link File}, the annotation file, which cannot be
  null, must exist, and must be readable
  @return {@link annotationHeader}, the parsed annotation header
  @throws IOException Thrown if an IO error occurred reading the
  <tt>annotationFile</tt>
  @throws BELDataHeaderParseException Thrown if a parsing error occurred
  when processing the <tt>annotationFile</tt>
  @throws BELDataConversionException
  @throws BELDataMissingPropertyException
  @throws BELDataInvalidPropertyException
  @throws InvalidArgument Thrown if the <tt>annotationFile</tt> is null,
  does not exist, or cannot be read