 
 import Foundation
 import Bindable
+
+public protocol ConductionHumanReadable {
+   var humanReadableString: String { get }
+}
+
+public extension ConductionHumanReadable where Self: RawRepresentable, Self.RawValue == String {
+   var humanReadableString: String { return rawValue }
+}
 
 public enum ConductionValidationError: Error {
    case values(selfType: String, keys: [String], message: String, errors: [String : String])

         errors[keyStrings.joined(separator: ",")] = $0.message
      }
      guard inconsistentKeyStringGroups.isEmpty, subErrors.isEmpty else {
         var validationError: ConductionValidationError = .consistency(selfType: "\(type(of: self))", keys: inconsistentKeyStringGroups, message: "\(validationContext) contains conflicting values.", errors: errors)
         validationError.consolidate(with: subErrors)
         return validationError
      }

         }.isEmpty
      
      guard invalidKeys.isEmpty, !hasValueSubErrors else {
         let keyStrings = invalidKeys.map { $0.rawValue }
         var validationError: ConductionValidationError = .values(selfType: "\(type(of: self))", keys: keyStrings, message: validationContext, errors: errors)
         validationError.consolidate(with: subErrors)
         return validationError
      }
