docs: static CodeBlock bindingTypeDocs(
        TypeName type, boolean abstrakt, boolean members, boolean dependent) {
      CodeBlock.Builder result = CodeBlock.builder()
          .add("A {@code Binding<$T>} implementation which satisfies\n", type)
          .add("Dagger's infrastructure requirements including:\n");
      if (dependent) {
        result.add("\n")
            .add("Owning the dependency links between {@code $T} and its\n", type)
            .add("dependencies.\n");
      }
      if (!abstrakt) {
        result.add("\n")
            .add("Being a {@code Provider<$T>} and handling creation and\n", type)
            .add("preparation of object instances.\n");
      }
      if (members) {
        result.add("\n")
            .add("Being a {@code MembersInjector<$T>} and handling injection\n", type)
            .add("of annotated fields.\n");
      }
      return result.build();
    }