Because in this new version I just want to check Some and then v1 or v2 depending on the value, so my options would have been:

    v1 tryCompareTo v2 match {
      case None                  ⇒ // Do nothing (pointless branch
      case Some(x) if x > 0 ⇒ builder += ((node, v1))
      case _                        ⇒ builder += ((node, v2))
     }


or 


    v1 tryCompareTo v2 match {
      case Some(x) ⇒ builder += ((node, if (x > 0) v1 else v2))
      case _             ⇒ // Pointless branch, do nothing
     }

or

    v1 tryCompareTo v2 match {
      case Some(x) if x > 0 ⇒ builder += ((node, v1))
      case Some(x)             ⇒ builder += ((node, v2))
      case _                         ⇒ // Pointless branch, do nothing
     }


And I didn't want to use Option combinators to avoid allocation of closures.