         self.init(rawSQL: false)
     }
     
+    // fileprivate so that SQLGenerationContext.append(arguments:) is the only
+    // available api.
     /// Returns whether arguments could be appended.
-    func append(arguments: StatementArguments) -> Bool {
+    fileprivate func append(arguments: StatementArguments) -> Bool {
         if arguments.isEmpty {
             return true
         }

/// - It provides a database connection so that request elements can perform
///   database introspection in order to build their SQL representation.
///
/// - It provides an "argumens sink" where request elements can dump database
///   values, in order to prevent SQL injection.
///
/// - It provides unique table aliases in order to disambiguates table names
///   and columns.
///
/// :nodoc:
public struct SQLGenerationContext {

    /// introspection in order to build their SQL representation.
    let db: Database
    
    /// The arguments sink which prevents SQL injection.
    let argumentsSink: StatementArgumentsSink
    
    /// All arguments gathered so far
