Uri template parse error

class val URITemplateParseError
  """
  Describes why a URI template string failed to parse.

  Contains a human-readable error message and the byte offset in the
  template string where the error was detected.
  """
  let message: String val
  let offset: USize

  new val create(message': String val, offset': USize) =>
    """
    Create a parse error with the given message and byte offset.
    """
    message = message'
    offset = offset'

  fun string(): String iso^ =>
    """
    Format as "offset N: message".
    """
    let num: String val = offset.string()
    let out =
      recover iso
        String(7 + num.size() + 2 + message.size())
      end
    out .> append("offset ")
      .> append(num)
      .> append(": ")
      .> append(message)
    consume out