Type_privateData(apr_pool_t *pool, const char *type) :
         ffi_(NULL)
     {
-        if (pool != NULL)
-            pool_ = pool;
+        _assert(pool != NULL);
+        pool_ = pool;
+        sig::Signature signature;
+        sig::Parse(pool_, &signature, type, &Structor_);
+        type_ = signature.elements[0].type;
+    }
 
+    Type_privateData(const char *type) :
+        ffi_(NULL)
+    {
         sig::Signature signature;
         sig::Parse(pool_, &signature, type, &Structor_);
         type_ = signature.elements[0].type;
 
     JSObjectRef global(CYGetGlobalObject(context));
     apr_pool_t *pool(CYGetGlobalPool());
 
-    Object_type = new(pool) Type_privateData(pool, "@");
-    Selector_type = new(pool) Type_privateData(pool, ":");
+    Object_type = new(pool) Type_privateData("@");
+    Selector_type = new(pool) Type_privateData(":");
 
 #ifdef __APPLE__
     NSCFBoolean_ = objc_getClass("NSCFBoolean");