 		case .int64: self.populateIvarToken(value: value as! IvarToken<Int64>, intoObject: object); break
 		case .float: self.populateIvarToken(value: value as! IvarToken<Float>, intoObject: object); break
 		case .double: self.populateIvarToken(value: value as! IvarToken<Double>, intoObject: object); break
+        case .bool: self.populateIvarToken(value: value as! IvarToken<Bool>, intoObject: object); break
 		default: break
 		}
 	}

		case .double: self.setProperty(for: value as! IvarToken<Double>, intoObject: instance); break
		case .data: self.setProperty(for: value as! IvarToken<Data>, intoObject: instance); break
		case .string: self.setProperty(for: value as! IvarToken<String>, intoObject: instance); break
		default:
			self.populateArrayProperty(with: value, intoObject: instance)
			break

                    let typeString = String(reflecting: type(of: child.value))
					let classType = self.parseGenericType(typeString, enclosing: "Swift.Array")
					guard let recovered = NSClassFromString(classType) else {
						switch self.cleanClassType(classType) {
						case "Int": return Array<Int>.self
						case "Int8": return Array<Int8>.self
						case "Int16": return Array<Int16>.self
