public ConstructorInfoConstructorWriter addParameterList() {
   List<ParameterSpec> thatParameterSpecList =
       constructorInfo
           .parameterInfoStream()
           .map(ParameterInfo::parameterSpec)
           .collect(Collectors.toList());
   parameterSpecLIst.addAll(thatParameterSpecList);
   return this;
 }
  @Override
  public ConstructorInfo[] getDeclaredConstructors() {
    Iterable<? extends Method> implConstructors = classDef.getMethods();
    List<ConstructorInfo> result = new ArrayList<>();

    for (Method constructor : implConstructors) {
      if (isConstructor(constructor)) {
        ConstructorInfo ci = new ConstructorInfo();
        ci.parameterTypes = convertParameters(constructor.getParameters());
        ci.annotations = convertAnnotations(constructor.getAnnotations());
        ci.modifiers = constructor.getAccessFlags();

        result.add(ci);
      }
    }

    ConstructorInfo[] array = new ConstructorInfo[result.size()];
    return result.toArray(array);
  }
 public void accept(ClassVisitor classVisitor) {
   String factoryName = Util.classNameToInternalName(info.getFactoryDelegateInterfaceName());
   // TODO: the reactor currently has an issue with interfaces
   classVisitor.visit(
       Opcodes.V1_5,
       Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT | Opcodes.ACC_INTERFACE,
       factoryName,
       null,
       "java/lang/Object",
       new String[0]);
   for (ConstructorInfo constructor : info.getConstructors()) {
     MethodVisitor mv =
         classVisitor.visitMethod(
             Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT,
             "create",
             constructor.getFactoryDelegateMethodDescriptor(),
             constructor.getSignature(),
             constructor.getExceptions());
     if (mv != null) {
       mv.visitEnd();
     }
   }
   classVisitor.visitEnd();
 }
 static ConstructorInfoConstructorWriter get(ConstructorInfo constructorInfo) {
   AccessInfo accessInfo = constructorInfo.accessInfo();
   return new ConstructorInfoConstructorWriter(constructorInfo, accessInfo);
 }