         super.tearDown()
     }
     
-    func testMappingWithContext() {
+	// MARK: - BaseMappable
+	// MARK: Single
+	func testMappingWithContext() {
 		let JSON = ["name": "Tristan"]
 		let context = Context(shouldMap: true)
 		

			}
		}
	}
}

		XCTAssertNil(person?.name)
	}
	
	// MARK: Array
	func testArrayMappingWithContext() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		let context = Context(shouldMap: true)
		
		let person = Mapper<PersonList>(context: context).map(JSON: JSON)
		
		XCTAssertNotNil(person)
		XCTAssertNotNil(person?.persons)
	}
	
	func testArrayMappingWithContextViaMappableExtension() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		let context = Context(shouldMap: true)
		
		let person = PersonList(JSON: JSON, context: context)
		
		XCTAssertNotNil(person)
		XCTAssertNotNil(person?.persons)
	}
	
	func testArrayMappingWithoutContext() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		
		let person = Mapper<PersonList>().map(JSON: JSON)
		
		XCTAssertNotNil(person)
		XCTAssertNil(person?.persons)
	}
	
	// MARK: ImmutableMappable
	// MARK: Single
	func testImmatableMappingWithContext() {
		let JSON = ["name": "Anton"]
		let context = ImmutableContext(isDeveloper: true)
		
		let person = try? Mapper<ImmutablePerson>(context: context).map(JSON: JSON)
		
		XCTAssertNotNil(person)
		XCTAssertTrue(person!.isDeveloper)
	}
	
	func testImmatableMappingWithContextViaMappableExtension() {
		let JSON = ["name": "Anton"]
		let context = ImmutableContext(isDeveloper: true)
		
		let person = try? ImmutablePerson(JSON: JSON, context: context)
		
		XCTAssertNotNil(person)
		XCTAssertTrue(person!.isDeveloper)
	}
	
	func testImmatableMappingWithoutContext() {
		let JSON = ["name": "Anton"]
		
		do {
			let _ = try Mapper<ImmutablePerson>().map(JSON: JSON)
		} catch ImmutablePersonMappingError.contextAbsense {
			// Empty
		} catch {
			XCTFail()
		}
	}
	
	// MARK: Array
	func testArrayImmutableMappingWithContext() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		let context = ImmutableContext(isDeveloper: true)
		
		let personList = try? Mapper<ImmutablePersonList>(context: context).map(JSON: JSON)
		
		XCTAssertNotNil(personList)
		
		personList?.persons.forEach { person in
			XCTAssertTrue(person.isDeveloper)
		}
	}
	
	func testArrayImmutableMappingWithContextViaMappableExtension() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		let context = ImmutableContext(isDeveloper: true)
		
		let personList = try? ImmutablePersonList(JSON: JSON, context: context)
		
		XCTAssertNotNil(personList)
		
		personList?.persons.forEach { person in
			XCTAssertTrue(person.isDeveloper)
		}
	}
	
	func testArrayImmutableMappingWithoutContext() {
		let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
		
		do {
			let _ = try Mapper<ImmutablePersonList>().map(JSON: JSON)
		} catch ImmutablePersonMappingError.contextAbsense {
			// Empty
		} catch {
			XCTFail()
		}
	}
	
	// MARK: - Nested Types
	// MARK: BaseMappable
	struct Context: MapContext {
		var shouldMap = false
		
