         return NSObject.self
     }
 
+    /// Returns a Boolean value that indicates whether the receiver can reverse a transformation.
     public override class func allowsReverseTransformation() -> Bool {
         return false
     }


    // MARK: - Value Transformers

    private let forwardTransformer: ForwardTransformer
    private let reverseTransformer: ReverseTransformer?



/// `allowsReverseTransformation` is a class function.
public class ReversibleValueTransformer<A, B>: ValueTransformer<A, B> {

    /// Initialize a newly allocated reversible value transformer with the given forward and
    /// reverse value transformers.
    ///
    /// - Parameters:
    ///   - forwardTransformer: A block used to perform a forward value transformation, that is
    ///     from value type `A?` to `B?`.
    ///   - reverseTransformer: A block used to perform a reverse value transformation, that is
    ///     from value type `B?` to `A?`.
    public required init(forwardTransformer: ForwardTransformer, reverseTransformer: ReverseTransformer) {
        super.init(forwardTransformer: forwardTransformer, reverseTransformer: reverseTransformer)
    }

    /// Returns a Boolean value that indicates whether the receiver can reverse a transformation.
    ///
    /// This class always allows reversible transformation.
    final public override class func allowsReverseTransformation() -> Bool {
        return true
    }

