 
   /// Look for the precedence group with the given name, or produce an error
   /// if such a group is not known.
-  public func lookupGroup(
+  func lookupGroup(
     _ groupName: PrecedenceGroupName
   ) throws -> PrecedenceGroup {
     guard let group = precedenceGroups[groupName] else {


extension OperatorPrecedence {
  /// Look for the precedence group corresponding to the given operator.
  public func lookupOperatorPrecedenceGroupName(
    _ operatorName: OperatorName
  ) throws -> PrecedenceGroupName? {
    guard let op = operators[operatorName] else {


/// A graph formed from a set of precedence groups, which can be used to
/// determine the relative precedence of two precedence groups.
struct PrecedenceGraph {
  /// The known set of precedence groups, found by name.
  var precedenceGroups: [PrecedenceGroupName : PrecedenceGroup] = [:]

  /// Add a new precedence group
  ///
  /// - throws: If there is already a precedence group with the given name,
  ///   throws PrecedenceGraphError.groupAlreadyExists.
  mutating func add(_ group: PrecedenceGroup) throws {
    if let existing = precedenceGroups[group.name] {
      throw OperatorPrecedenceError.groupAlreadyExists(
        existing: existing, new: group)
