code: private static POJODefinition _construct(Class<?> beanType)
      {
          Map<String,Prop> propsByName = new TreeMap<String,Prop>();
          _introspect(beanType, propsByName);
  
          Constructor<?> defaultCtor = null;
          Constructor<?> stringCtor = null;
          Constructor<?> longCtor = null;
  
          for (Constructor<?> ctor : beanType.getDeclaredConstructors()) {
              Class<?>[] argTypes = ctor.getParameterTypes();
              if (argTypes.length == 0) {
                  defaultCtor = ctor;
              } else if (argTypes.length == 1) {
                  Class<?> argType = argTypes[0];
                  if (argType == String.class) {
                      stringCtor = ctor;
                  } else if (argType == Long.class || argType == Long.TYPE) {
                      longCtor = ctor;
                  } else {
                      continue;
                  }
              } else {
                  continue;
              }
          }
          Prop[] props;
          if (propsByName.isEmpty()) {
              props = NO_PROPS;
          } else {
              props = propsByName.values().toArray(NO_PROPS);
          }
          return new POJODefinition(beanType, props, defaultCtor, stringCtor, longCtor);
      }
docs: /*
  ********************************************************************
  /* Internal methods
  ********************************************************************