   let label: String
   init(_ label: String) {
     self.label = label
+  }
+
+  func toString() -> String {
+    return "#\(self.label)"
   }
 }
 

protocol SelectorPartial {

}

protocol SelectorConvertible {

  func toSelector() -> Selector {
    return self
  }

  func toString() -> String {
    return partials.map {$0.toString()}.joinWithSeparator(" ")
  }
}

struct SiblingOperator: SelectorPartial {
  func toString() -> String {
    return "+"
  }
}

struct ClassName: SelectorPartial, SelectorConvertible {
  let label: String
  init(_ label: String) {
    self.label = label
  }

  func toString() -> String {
    return ".\(self.label)"
  }
}

