             XCTFail("Unless you set the standard argument matchers, you can't use the simple verify method. Sorry!", file: file, line: line)
         }
     }
-}+}

    }
}

public func assertNotNil <T>( candidate : T?, file: String = __FILE__, line: UInt = __LINE__, _ andContinue : (withValue : T) -> Void = { value in return }) {
    if let value = candidate {
        andContinue(withValue: value)
    } else {
        XCTFail("Value was nil but should not have been.", file: file, line: line)
    }
}

public func assert<T : AnyObject>(collection: [T], hasOnlyThisObject expected: T, file: String = __FILE__, line: UInt = __LINE__) {
    if collection.count == 1 && expected === collection[0] {
        return
    } else {

    }
}

public func assert <T : AnyObject> (expectedArray expected: Array<T>, hasSameContentsAs actual : Array<T>, file: StaticString = #file, line: UInt = #line ){
    assertSimilarArrays(expected, actual: actual, file: file, line: line, checkSimilarity: { expected, actual -> Bool in expected === actual })
}

public func assert <T : Equatable> (expectedArray expected: Array<T>, hasEqualContentsAs actual : Array<T>, file: StaticString = #file, line: UInt = #line ){
    assertSimilarArrays(expected, actual: actual, file: file, line: line, checkSimilarity: { expected, actual -> Bool in  expected == actual })
}

private func assertSimilarArrays<T>(_ expected : Array<T>, actual : Array<T>, file: StaticString = #file, line: UInt = #line, checkSimilarity: (T, T) -> Bool){
    if(expected.count == actual.count){
        for index in 0 ..< expected.count {
            let expectedItem = expected[index]
