def Question(order, option=None):
  """Decorator for Builder methods that represent questions.
  
  Args:
    order: Unique id for this question which will be used to order it when
      presented to the user. Most commonly an int, but any comparable should
      work.
    option: The parent option (default None). Providing this marks the question
      as a subquestion: it will only be applied (and, in a future version, 
      shown) if the parent option is selected.
    """
  def decorate(func):
    func.order = order
    if option:
      option.subquestions[order] = func
    else:
      func.is_question = True
    return func
  return decorate