code: JCTree DefaultConstructor(TreeMaker make,
                              ClassSymbol c,
                              MethodSymbol baseInit,
                              List<Type> typarams,
                              List<Type> argtypes,
                              List<Type> thrown,
                              long flags,
                              boolean based) {
          JCTree result;
          if ((c.flags() & ENUM) != 0 &&
              (types.supertype(c.type).tsym == syms.enumSym)) {
              // constructors of true enums are private
              flags = (flags & ~AccessFlags) | PRIVATE | GENERATEDCONSTR;
          } else
              flags |= (c.flags() & AccessFlags) | GENERATEDCONSTR;
          if (c.name.isEmpty()) {
              flags |= ANONCONSTR;
          }
          Type mType = new MethodType(argtypes, null, thrown, c);
          Type initType = typarams.nonEmpty() ?
              new ForAll(typarams, mType) :
              mType;
          MethodSymbol init = new MethodSymbol(flags, names.init,
                  initType, c);
          init.params = createDefaultConstructorParams(make, baseInit, init,
                  argtypes, based);
          List<JCVariableDecl> params = make.Params(argtypes, init);
          List<JCStatement> stats = List.nil();
          if (c.type != syms.objectType) {
              stats = stats.prepend(SuperCall(make, typarams, params, based));
          }
          result = make.MethodDef(init, make.Block(0, stats));
          return result;
      }
docs: Generate default constructor for given class. For classes different
  from java.lang.Object, this is:
  
  c(argtype_0 x_0, ..., argtype_n x_n) throws thrown {
  super(x_0, ..., x_n)
  }
  
  or, if based == true:
  
  c(argtype_0 x_0, ..., argtype_n x_n) throws thrown {
  x_0.super(x_1, ..., x_n)
  }
  
  @param make     The tree factory.
  @param c        The class owning the default constructor.
  @param argtypes The parameter types of the constructor.
  @param thrown   The thrown exceptions of the constructor.
  @param based    Is first parameter a this$n?