     }
 }
 
-public extension StringProtocol {
+extension StringProtocol {
     /// Heuristic to check whether the receiver may be an escaping callback type
+    @usableFromInline
     var maybeCallback: Bool {
         for suffix in GIR.callbackSuffixes {
             guard !hasSuffix(suffix) else { return true }

    }

    /// Heuristic that returns an optional when the receiver may be a callback
    var optionalWhenCallback: String {
        guard !hasSuffix("?") && !hasSuffix("!") && maybeCallback else { return String(self) }
        return self + "?"
    }

    /// Heuristic that returns an optional when the receiver may be a callback
    var optionalWhenPointer: String {
        guard !hasSuffix("?") && !hasSuffix("!") && (hasSuffix("pointer") || maybeCallback) else { return String(self) }
        return self + "?"
    }

    /// Return `true` if the receiver represents a type name that should be a force-unwrapped optional
    var doForceOptional: Bool {
        return GIR.forceUnwrapped.contains(String(self)) || maybeCallback
    }

/// - Parameters:
///   - level: indentation level
///   - s: String to be indented
@usableFromInline
func indent(level: Int, _ s: String = "") -> String {
    return String(repeating: " ", count: level * 4) + s
}
