code: String valueTokenFor(Object value) {
          Integer token = valueToToken.get(value);
          if (token == null) {
              token = valueToToken.size();
              valueToToken.put(value, token);
          }
          return ":" + token;
      }
docs: Returns the value token for the given value, creating a new token as
  necessary.