code: private CodeBlock getAdapterParameterList(ConstructorInfo constructorInfo) {
      List<CodeBlock> blocks = new ArrayList<>();
      for (ConstructorInfo.Param param : constructorInfo.constructorParameters()) {
  
        if (param instanceof ConstructorInfo.AdapterParam) {
          ConstructorInfo.AdapterParam adapterParam = (ConstructorInfo.AdapterParam) param;
          if (adapterParam.adapter.nullSafe()) {
            blocks.add(adapterInstance(adapterParam.adapter));
          } else {
            blocks.add(CodeBlock.of("$T.nullSafeClone($L)",
                UTILS, adapterInstance(adapterParam.adapter)));
          }
  
        } else if (param instanceof ConstructorInfo.ClassParam) {
          ConstructorInfo.ClassParam classParam = (ConstructorInfo.ClassParam) param;
          if (classParam.className instanceof ParameterizedTypeName) {
            ParameterizedTypeName parameterizedName = (ParameterizedTypeName) classParam.className;
            blocks.add(CodeBlock.of("($1T<$2T>)($1T<?>) $3T.class", Class.class, parameterizedName,
                parameterizedName.rawType));
          } else {
            blocks.add(CodeBlock.of("$T.class", classParam.className));
          }
  
        } else if (param instanceof ConstructorInfo.CreatorParam) {
          ConstructorInfo.CreatorParam creatorParam = (ConstructorInfo.CreatorParam) param;
          if (creatorParam.creatorOwner == null) {
            blocks.add(CodeBlock.of("null"));
          } else if (creatorParam.requiresCast) {
            ClassName creator = ClassName.get("android.os", "Parcelable", "Creator");
            blocks.add(CodeBlock.of("($T) $T.$N", creator, creatorParam.creatorOwner, "CREATOR"));
          } else {
            blocks.add(CodeBlock.of("$T.$N", creatorParam.creatorOwner, "CREATOR"));
          }
        }
      }
  
      return CodeBlocks.join(blocks, ", ");
    }
docs: Returns a comma-separated {@link CodeBlock} for all of the constructor parameter
  {@code dependencies} of an adapter.