         matched = c.properties.isWhitespace && (c.isASCII || !options.usesASCIISpaces)
       case .word:
         matched = (c.properties.isAlphabetic || c == "_") && (c.isASCII || !options.usesASCIIWord)
-      case .custom(let set):
-        matched = set.any { $0.matches(Character(c), with: options) }
       }
       if isInverted {
         matched.toggle()

  }
}

extension DSLTree.Node {
  var characterClass: _CharacterClassModel? {
    switch self {
    case let .customCharacterClass(ccc):
      return ccc.modelCharacterClass
    case let .atom(a):
      return a.characterClass
    case .characterPredicate:
      // FIXME: Do we make one from this?
      return nil
    default:
      return nil
    }
  }
}

extension _CharacterClassModel {
  func withMatchLevel(
    _ level: _CharacterClassModel.MatchLevel


  public static var word: _CharacterClassModel {
    .init(cc: .word, matchLevel: .graphemeCluster)
  }
}

