 		self.other = y
 	}
 	
+	/// Check if both specifications are satisfied.
+	///
+	/// - parameter candidate: The object to be checked.
+	///
+	/// - returns: `true` if the candidate satisfies both specifications, `false` otherwise.
 	public func isSatisfiedBy(_ candidate: Any?) -> Bool {
 		return one.isSatisfiedBy(candidate) && other.isSatisfiedBy(candidate)
 	}
 }
 
+
+/// Check if either of the specifications are satisfied.
+///
+/// This is a composite specification that combines two specifications
+/// into a single specification.
 public class OrSpecification: Specification {
 	private let one: Specification
 	private let other: Specification

// MIT license. Copyright (c) 2016 SwiftyFORM. All rights reserved.

/// A type that can check whether or not a candidate object satisfy the rules.
///

		self.wrapped = x
	}
	
	/// Check if specification is not satisfied.
	///
	/// - parameter candidate: The object to be checked.
	///
	/// - returns: `true` if the candidate doesn't satisfy the specification, `false` otherwise.
	public func isSatisfiedBy(_ candidate: Any?) -> Bool {
		return !wrapped.isSatisfiedBy(candidate)
	}
}


/// This specification is never satisfied.
public class FalseSpecification: Specification {
	public init() {
	}
	
	/// Doesn't do anything. This specification is never satisfied.
	///
	/// - parameter candidate: The parameter is ignored.
	///
	/// - returns: `false` always.
	public func isSatisfiedBy(_ candidate: Any?) -> Bool {
		return false
	}
}

/// This specification is always satisfied.
public class TrueSpecification: Specification {
	public init() {
	}
	
	/// Doesn't do anything. This specification is always satisfied.
	///
	/// - parameter candidate: The parameter is ignored.
	///
	/// - returns: `true` always.
	public func isSatisfiedBy(_ candidate: Any?) -> Bool {
		return true
	}
}


/// - warning:
/// This class will be removed in the future, starting with SwiftyFORM 2.0.0
