   }
 }
 
-fileprivate protocol KeyValueStringFormatterValueHandler {
+fileprivate protocol KeyValueStringFormatterValueHandler: class {
+  // Swift 3: Cannot nest protocols in classes, hence outside of the class
+  // - if that isn't a class protocol, swiftc 3.1.1 crashes on Linux
+  
   var lastKeyWasMiss : Bool { get }
 
   /**

    }
  }
  
  struct ArrayValueHandler : KeyValueStringFormatterValueHandler {
    var lastKeyWasMiss = false
    let array  : [ Any? ]
    var cursor : Int = 0


  // MARK: - Value Handlers
  
  final class KeyValueHandler : KeyValueStringFormatterValueHandler {
    let lastKeyWasMiss = false
    let object : Any?
    
