     case (.F,       .F):                 return true
     case (.FF,      .FF):                return true
     case (.FFF,     .FFF):               return true
+    case (.Soft,    .Soft):              return true
+    case (.Hard,    .Hard):              return true
     case let (.Number (l), .Number (r)): return l == r
     default:                             return false
     }

        case F:             return 96
        case FF:            return 112
        case FFF:           return 127
        case let Number(v): return v
        }
    }

    case F
    case FF
    case FFF
    case Soft
    case Hard
    case Number(Int)

    var numerical: Int {
