         return self
     }
     
+    /**
+     Method for declaring optional field that may be found in a JSON dictionary. If the field is not found during validation,
+     nothing happens.
+     
+     - parameter name: string name of the field
+     - parameter rule: rule that should validate the value of the field
+     - parameter dump: closure used for dump, receives immutable object of type T and may return optional value of R.V field type
+     
+     - returns: returns self for field declaration chaining
+     */
     public func optional<R: Rule>(name: String, _ rule: R, dump: (T)->R.V?) -> Self {
         optionalDumpRules.append((name, storeDumpRule(rule, dump)))
         return self

    private var itemRule: R
    private var invalidItemHandler: InvalidItemHandler = { throw $0 }
    
    /**
     Validator initializer
     
     - parameter itemRule: rule for validating array items of type R.V
     */
    public init(itemRule: R, invalidItemHandler: InvalidItemHandler? = nil) {
        self.itemRule = itemRule


    /**
     Method for declaring optional field that may be found in a JSON dictionary. If the field is not found during validation,
     nothing happens.
     
     - parameter name: string name of the field
     - parameter rule: rule that should validate the value of the field
