case classProperties[I](setup: () ⇒ I, tearDown: (I) ⇒ Unit, properties: Seq[Property[I, Unit]]) extends Iterable[Property[Unit, Unit]] with Product with Serializable
case classProperty[I, +O](name: String, f: (I) ⇒ Result[O]) extends (I) ⇒ Result[O] with Product with Serializable