docs: public MetaMethod retrieveConstructor(Object[] arguments) {
          checkInitalised();
          if (arguments == null) arguments = EMPTY_ARGUMENTS;
          Class[] argClasses = MetaClassHelper.convertToTypeArray(arguments);
          MetaClassHelper.unwrap(arguments);
          Object res = chooseMethod("<init>", constructors, argClasses);
          if (res instanceof MetaMethod) return (MetaMethod) res;
          CachedConstructor constructor = (CachedConstructor) res;
          if (constructor != null) return new MetaConstructor(constructor, false);
          if (arguments.length == 1 && arguments[0] instanceof Map) {
              res = chooseMethod("<init>", constructors, MetaClassHelper.EMPTY_TYPE_ARRAY);
          } else if (
                  arguments.length == 2 && arguments[1] instanceof Map &&
                  theClass.getEnclosingClass()!=null &&
                  theClass.getEnclosingClass().isAssignableFrom(argClasses[0]))
          {
              res = chooseMethod("<init>", constructors, new Class[]{argClasses[0]});
          }
          if (res instanceof MetaMethod) return (MetaMethod) res;
          constructor = (CachedConstructor) res;
          if (constructor != null) return new MetaConstructor(constructor, true);
  
          return null;
      }