code: @Override
      public DoubleVector getDocumentVector(int documentNumber) {
          if (wordSpace == null)
              throw new IllegalStateException(
                      "The document space has not yet been generated.");
  
          if (documentNumber < 0 || documentNumber >= wordSpace.columns()) {
              throw new IllegalArgumentException(
                      "Document number is not within the bounds of the number of "
                      + "documents: " + documentNumber);
          }
          return wordSpace.getColumnVector(documentNumber);
      }
docs: Returns the vector corresponding to a document processed by this space.
  Vector values represent the word frequencies that have been transformed
  according to the {@link Transform} instances provided to {@link
  #processSpace(Properites)}.
  
  <p> This method requires that {@code processSpace} has been called first
  to ensure the semantic space's state is properly constructed.  Calls
  before this point will throw an {@link IllegalStateException}.
  
  Implementation note: If a specific document ordering is needed, caution
  should be used when using this class in a multi-threaded environment.
  Beacuse the document number is based on what order it was
  <i>processed</i>, no guarantee is made that this will correspond with the
  original document ordering as it exists in the corpus files.  However, in
  a single-threaded environment, the ordering will be preserved.
  
  @param documentNumber {@inheritDoc}
  
  @return {@inheritDoc}
  
  @throws IllegalArgumentException {@inheritDoc}
  @throws IllegalStateException {@inheritDoc}