code: public Name
  getName(Name origin) throws IOException {
  	String next = _getIdentifier("a name");
  	try {
  		Name name = Name.fromString(next, origin);
  		if (!name.isAbsolute())
  			throw new RelativeNameException(name);
  		return name;
  	}
  	catch (TextParseException e) {
  		throw exception(e.getMessage());
  	}
  }
docs: Gets the next token from a tokenizer and converts it to a name.
  @param origin The origin to append to relative names.
  @return The next token in the stream, as a name.
  @throws TextParseException The input was invalid or not a valid name.
  @throws IOException An I/O error occurred.
  @throws RelativeNameException The parsed name was relative, even with the
  origin.
  @see Name