decode ioc in OER in runtime
diff --git a/skeletons/constr_SEQUENCE_oer.c b/skeletons/constr_SEQUENCE_oer.c
index 5fb697c..84b0db9 100644
--- a/skeletons/constr_SEQUENCE_oer.c
+++ b/skeletons/constr_SEQUENCE_oer.c
@@ -81,7 +81,6 @@
 
     (void)opt_codec_ctx;
     (void)constraints;
-    (void)specs;
 
     /*
      * Create the target structure if it is not present already.
@@ -197,9 +196,33 @@
                 memb_ptr2 = &memb_tmpptr; /* Ensure this & remains in scope! */
             }
 
-            rval = elm->type->oer_decoder(opt_codec_ctx, elm->type,
-                                          elm->oer_constraints, memb_ptr2, ptr,
-                                          size);
+            if((elm->flags & ATF_OPEN_TYPE) && elm->type_selector) {
+                asn_TYPE_descriptor_t *et = elm->type_selector(td, st);
+                ssize_t ot_ret;
+                if(!et) {
+                    ASN__DECODE_FAILED;
+                }
+                ot_ret = oer_open_type_get(opt_codec_ctx, et, NULL, memb_ptr2,
+                                           ptr, size);
+                switch(ot_ret) {
+                case -1:
+                    rval.code = RC_FAIL;
+                    rval.consumed = 0;
+                    break;
+                case 0:
+                    rval.code = RC_WMORE;
+                    rval.consumed = 1;
+                    break;
+                default:
+                    rval.code = RC_OK;
+                    rval.consumed = ot_ret;
+                    break;
+                }
+            } else {
+                rval = elm->type->oer_decoder(opt_codec_ctx, elm->type,
+                                              elm->oer_constraints, memb_ptr2,
+                                              ptr, size);
+            }
             switch(rval.code) {
             case RC_OK:
                 ADVANCE(rval.consumed);