code: public JsonHash getJsonHashOrNull(String key) throws IllegalStateException {
  		Type type = stateMap.get(key);
  		if (type == null) {
  			return null;
  		}
  		switch (type) {
  			case NULL:
  				return null;
  			case HASH:
  				return (JsonHash) get(key);
  			default:
  				throw new IllegalStateException("unexpected token. token=" + type);
  		}
  	}
docs: Retrieves the corresponding value of the given key as {@link JsonHash}.<br>
  If it is neither {@code null} nor a {@link JsonHash}, {@link IllegalStateException} will be thrown.
  @param key
  @return The value
  @throws IllegalStateException The given index points neither {@code null} nor a {@link JsonHash}.
  @author vvakame