From d7ebd9443077d3379eef5074a903222ccd78f6ed Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Thu, 29 Aug 2024 19:17:33 +0000 Subject: [PATCH 1/3] Update scalafmt-core to 3.7.17 --- .scalafmt.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.scalafmt.conf b/.scalafmt.conf index 1fa273d8..873f0782 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,2 +1,2 @@ -version=3.7.1 +version=3.7.17 runner.dialect=scala3 \ No newline at end of file From 0a87fd464d9a29429865dbdab50ebb982419a9d4 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Thu, 29 Aug 2024 19:18:06 +0000 Subject: [PATCH 2/3] Reformat with scalafmt 3.7.17 Executed command: scalafmt --non-interactive --- .../json/bench/tethysjson/TethysBench.scala | 9 +- .../json/bench/tethysjson/TethysBench.scala | 6 +- .../main/scala/json/bench/BenchMarkdown.scala | 94 +- .../scala/json/bench/JmhReaderBench.scala | 46 +- .../scala/json/bench/JmhWriterBench.scala | 42 +- .../scala/json/bench/circe/CirceBench.scala | 6 +- .../bench/handwritten/HandwrittenBench.scala | 111 +- .../scala/json/bench/json4s/Json4sBench.scala | 12 +- .../main/scala/json/bench/model/Data.scala | 22 +- .../scala/json/bench/play/PlayBench.scala | 3 +- .../scala/json/bench/spray/SprayBench.scala | 3 +- .../tethys/compat/CollectionBuilder.scala | 8 +- .../JsonObjectWriterDerivation.scala | 5 +- .../derivation/JsonReaderDerivation.scala | 5 +- .../tethys/compat/CollectionBuilder.scala | 41 +- .../JsonObjectWriterDerivation.scala | 5 +- .../derivation/JsonReaderDerivation.scala | 5 +- .../tethys/enumeratum/TethysEnum.scala | 2 +- .../tethys/enumeratum/TethysKeyEnum.scala | 5 +- .../tethys/enumeratum/TethysValueEnum.scala | 22 +- .../scala-2/tethys/enumeratum/Direction.scala | 13 +- .../enumeratum/EnumeratumSupportTest.scala | 41 +- .../tethys/derivation/AutoDerivation.scala | 8 +- .../derivation/SemiautoDerivation.scala | 41 +- .../derivation/builder/DependentField.scala | 14998 +++++++++++++++- .../derivation/builder/FieldStyle.scala | 12 +- .../builder/NotDescribedException.scala | 3 +- .../builder/ReaderDescription.scala | 33 +- .../derivation/builder/ReaderField.scala | 2 +- .../derivation/builder/WriterBuilder.scala | 15 +- .../builder/WriterDescription.scala | 42 +- .../impl/BaseMacroDefinitions.scala | 3 +- .../derivation/impl/CaseClassUtils.scala | 47 +- .../tethys/derivation/impl/LoggingUtils.scala | 6 +- .../tethys/derivation/impl/MacroUtils.scala | 57 +- .../impl/builder/ReaderBuilderUtils.scala | 43 +- .../builder/ReaderDescriptionCommons.scala | 169 +- .../impl/builder/ReaderDescriptionMacro.scala | 7 +- .../impl/builder/WriteBuilderUtils.scala | 106 +- .../impl/builder/WriterBuilderCommons.scala | 285 +- .../impl/builder/WriterDescriptorMacro.scala | 10 +- .../impl/derivation/AutoDerivationMacro.scala | 18 +- .../impl/derivation/DerivationUtils.scala | 17 +- .../impl/derivation/ReaderDerivation.scala | 548 +- .../derivation/SemiautoDerivationMacro.scala | 62 +- .../impl/derivation/WriterDerivation.scala | 180 +- .../tethys/derivation/ADTWithType.scala | 2 +- .../tethys/derivation/ADTWithWrongType.scala | 5 +- .../derivation/AutoReaderDerivationTest.scala | 60 +- .../derivation/AutoWriterDerivationTest.scala | 61 +- .../derivation/RedundantJsonReaderTest.scala | 11 +- .../SemiautoReaderDerivationTest.scala | 455 +- .../SemiautoWriterDerivationTest.scala | 122 +- .../derivation/WriterRenamingSyntaxTest.scala | 10 +- .../builder/ReaderDescriptionTest.scala | 318 +- .../builder/WriterDescriptionTest.scala | 62 +- .../tethys/derivation/package.scala | 1 - 57 files changed, 16506 insertions(+), 1819 deletions(-) diff --git a/modules/benchmarks/src/main/scala-2/json/bench/tethysjson/TethysBench.scala b/modules/benchmarks/src/main/scala-2/json/bench/tethysjson/TethysBench.scala index ecb5e3b6..61a43e75 100644 --- a/modules/benchmarks/src/main/scala-2/json/bench/tethysjson/TethysBench.scala +++ b/modules/benchmarks/src/main/scala-2/json/bench/tethysjson/TethysBench.scala @@ -7,13 +7,16 @@ import tethys.jackson._ object TethysBench { - implicit val dataWriter: JsonWriter[Data] = tethys.derivation.semiauto.jsonWriter[Data] - implicit val dataReader: JsonReader[Data] = tethys.derivation.semiauto.jsonReader[Data] + implicit val dataWriter: JsonWriter[Data] = + tethys.derivation.semiauto.jsonWriter[Data] + implicit val dataReader: JsonReader[Data] = + tethys.derivation.semiauto.jsonReader[Data] object TethysJacksonDataProcessor extends DataWriter with DataReader { override def write(seq: Seq[Data]): String = seq.asJson - override def read(json: String): Seq[Data] = json.jsonAs[Seq[Data]].toOption.get + override def read(json: String): Seq[Data] = + json.jsonAs[Seq[Data]].toOption.get } } diff --git a/modules/benchmarks/src/main/scala-3/json/bench/tethysjson/TethysBench.scala b/modules/benchmarks/src/main/scala-3/json/bench/tethysjson/TethysBench.scala index 18a22c21..62b65148 100644 --- a/modules/benchmarks/src/main/scala-3/json/bench/tethysjson/TethysBench.scala +++ b/modules/benchmarks/src/main/scala-3/json/bench/tethysjson/TethysBench.scala @@ -5,8 +5,7 @@ import json.bench.{DataReader, DataWriter} import tethys.* import tethys.jackson.* -/** - * Created by eld0727 on 21.04.17. +/** Created by eld0727 on 21.04.17. */ object TethysBench { @@ -17,6 +16,7 @@ object TethysBench { override def write(seq: Seq[Data]): String = seq.asJson - override def read(json: String): Seq[Data] = json.jsonAs[Seq[Data]].toOption.get + override def read(json: String): Seq[Data] = + json.jsonAs[Seq[Data]].toOption.get } } diff --git a/modules/benchmarks/src/main/scala/json/bench/BenchMarkdown.scala b/modules/benchmarks/src/main/scala/json/bench/BenchMarkdown.scala index a3ec4d3d..0eb798f0 100644 --- a/modules/benchmarks/src/main/scala/json/bench/BenchMarkdown.scala +++ b/modules/benchmarks/src/main/scala/json/bench/BenchMarkdown.scala @@ -19,22 +19,22 @@ object BenchMarkdown { val benchmarksOrdering: Ordering[String] = Ordering.by[String, Int] { case "Parsing" | "json.bench.JmhReaderBench.bench" => 1 case "Writing" | "json.bench.JmhWriterBench.bench" => 2 - case _ => 3 + case _ => 3 } val processorsOrdering: Ordering[String] = Ordering.by[String, Int] { case "tethys-jackson" => 1 - case "pure-jackson" => 2 - case "circe" => 3 - case "circe-jawn" => 4 - case "circe-jackson" => 5 + case "pure-jackson" => 2 + case "circe" => 3 + case "circe-jawn" => 4 + case "circe-jackson" => 5 case "json4s-jackson" => 8 - case "json4s-native" => 9 - case "play-json" => 10 - case "spray-json" => 11 - case "pushka" => 12 - case "zio-json" => 13 - case _ => 13 + case "json4s-native" => 9 + case "play-json" => 10 + case "spray-json" => 11 + case "pushka" => 12 + case "zio-json" => 13 + case _ => 13 } val namesMapping = Map( @@ -42,17 +42,30 @@ object BenchMarkdown { "json.bench.JmhWriterBench.bench" -> "Writing" ) - implicit val mbScore: JsonReader[Either[String, Double]] = new JsonReader[Either[String, Double]] { - override def read(it: TokenIterator)(implicit fieldName: FieldName): Either[String, Double] = { - if(it.currentToken().isNumberValue) Right(Math.round(JsonReader.doubleReader.read(it) * 1000) / 1000.0) - else Left(JsonReader.stringReader.read(it)) + implicit val mbScore: JsonReader[Either[String, Double]] = + new JsonReader[Either[String, Double]] { + override def read( + it: TokenIterator + )(implicit fieldName: FieldName): Either[String, Double] = { + if (it.currentToken().isNumberValue) + Right(Math.round(JsonReader.doubleReader.read(it) * 1000) / 1000.0) + else Left(JsonReader.stringReader.read(it)) + } } - } - implicit val primaryMetricsReader: JsonReader[PrimaryMetrics] = jsonReader[PrimaryMetrics] + implicit val primaryMetricsReader: JsonReader[PrimaryMetrics] = + jsonReader[PrimaryMetrics] implicit val benchmarkReader: JsonReader[Benchmark] = jsonReader[Benchmark] - case class Benchmark(benchmark: String, mode: String, params: mutable.LinkedHashMap[String, String], primaryMetric: PrimaryMetrics) - case class PrimaryMetrics(score: Either[String, Double], scoreError: Either[String, Double]) + case class Benchmark( + benchmark: String, + mode: String, + params: mutable.LinkedHashMap[String, String], + primaryMetric: PrimaryMetrics + ) + case class PrimaryMetrics( + score: Either[String, Double], + scoreError: Either[String, Double] + ) def readBenchmarks(dir: String, file: String): Seq[Benchmark] = { val jhmResultsPath = Paths.get(dir, file) @@ -62,14 +75,21 @@ object BenchMarkdown { def main(args: Array[String]): Unit = { val List(dir) = args.toList - val benchs = readBenchmarks(dir, "jmh-reader.json") ++ readBenchmarks(dir, "jmh-writer.json") + val benchs = readBenchmarks(dir, "jmh-reader.json") ++ readBenchmarks( + dir, + "jmh-writer.json" + ) val grouped = benchs.groupBy(_.benchmark) val mainTables = grouped.toList.sortBy(_._1)(benchmarksOrdering).map { case (name, benchmarks) => - val rows = benchmarks.map(_.params(nameColumn)).distinct.sorted(processorsOrdering) + val rows = benchmarks + .map(_.params(nameColumn)) + .distinct + .sorted(processorsOrdering) val colls = benchmarks.map(_.params(sizeColumn)).distinct val data = benchmarks.map { b => - (b.params(nameColumn), b.params(sizeColumn)) -> b.primaryMetric.score.fold(identity, _.toString) + (b.params(nameColumn), b.params(sizeColumn)) -> b.primaryMetric.score + .fold(identity, _.toString) }.toMap s""" @@ -87,7 +107,7 @@ object BenchMarkdown { private def chart(name: String, bs: Seq[Benchmark], dir: String): String = { val title = namesMapping.getOrElse(name, name) val images = Paths.get(dir, "images") - if(Files.notExists(images)) { + if (Files.notExists(images)) { Files.createDirectory(images) } val imgPath = dir + "/images/" + title + "Performance" @@ -98,16 +118,25 @@ object BenchMarkdown { """.stripMargin } - private def table(rows: Seq[String], columns: Seq[String], data: Map[(String, String), String]): String = { + private def table( + rows: Seq[String], + columns: Seq[String], + data: Map[(String, String), String] + ): String = { val header = columns.foldLeft("name \\ size")(_ + "|" + _) val line = columns.map(_ => "---").foldLeft("---")(_ + "|" + _) val dataLines = rows.map { row => - columns.map(col => data.getOrElse((row, col), " ")).foldLeft(row)(_ + "|" + _) + columns + .map(col => data.getOrElse((row, col), " ")) + .foldLeft(row)(_ + "|" + _) } dataLines.foldLeft(header + "\n" + line)(_ + "\n" + _) } - private def buildPerformanceChart(title: String, benchmarks: Seq[Benchmark]): CategoryChart = { + private def buildPerformanceChart( + title: String, + benchmarks: Seq[Benchmark] + ): CategoryChart = { val chart: CategoryChart = new CategoryChartBuilder() .width(940) .height(400) @@ -116,12 +145,15 @@ object BenchMarkdown { .xAxisTitle("size") .build() - val maxs = benchmarks.groupBy(_.params(sizeColumn)).map { - case (size, bs) => size -> bs.map(_.primaryMetric.score.fold(_ => 0.0, identity)).max + val maxs = benchmarks.groupBy(_.params(sizeColumn)).map { case (size, bs) => + size -> bs.map(_.primaryMetric.score.fold(_ => 0.0, identity)).max } - benchmarks.groupBy(_.params(nameColumn)).toList.sortBy(_._1)(processorsOrdering).foreach { - case (name, bs) => + benchmarks + .groupBy(_.params(nameColumn)) + .toList + .sortBy(_._1)(processorsOrdering) + .foreach { case (name, bs) => import scala.collection.JavaConverters._ val data = bs.map { b => @@ -131,7 +163,7 @@ object BenchMarkdown { val xData = data.map(_._1).asJava val yData = data.map(t => Double.box(t._2)).asJava chart.addSeries(name, xData, yData) - } + } chart } diff --git a/modules/benchmarks/src/main/scala/json/bench/JmhReaderBench.scala b/modules/benchmarks/src/main/scala/json/bench/JmhReaderBench.scala index e32e0131..6e9346a8 100644 --- a/modules/benchmarks/src/main/scala/json/bench/JmhReaderBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/JmhReaderBench.scala @@ -13,40 +13,44 @@ import org.openjdk.jmh.annotations.{State, _} @Fork(value = 1, jvmArgsAppend = Array("-Xms1G", "-Xmx1G")) @State(Scope.Benchmark) class JmhReaderBench { - @Param(Array( - "128b", - "1kb", - "128kb", - "1mb", - "32mb" - )) + @Param( + Array( + "128b", + "1kb", + "128kb", + "1mb", + "32mb" + ) + ) var jsonSize: String = _ val seed = 10000 - var data: String =_ + var data: String = _ @Setup(Level.Trial) def setup(): Unit = { val entities = jsonSize match { - case "128b" => Data.dataSamples(1, seed) - case "1kb" => Data.dataSamples(8, seed) + case "128b" => Data.dataSamples(1, seed) + case "1kb" => Data.dataSamples(8, seed) case "128kb" => Data.dataSamples(128 * 8, seed) - case "1mb" => Data.dataSamples(8 * 128 * 8, seed) - case "32mb" => Data.dataSamples(32 * 8 * 128 * 8, seed) + case "1mb" => Data.dataSamples(8 * 128 * 8, seed) + case "32mb" => Data.dataSamples(32 * 8 * 128 * 8, seed) } data = TethysJacksonDataProcessor.write(entities) } - @Param(Array( - "tethys-jackson", - "pure-jackson", - "circe-jawn", - "circe-jackson", - "play-json", - "spray-json", - "zio-json" - )) + @Param( + Array( + "tethys-jackson", + "pure-jackson", + "circe-jawn", + "circe-jackson", + "play-json", + "spray-json", + "zio-json" + ) + ) var processorName: String = _ @Benchmark diff --git a/modules/benchmarks/src/main/scala/json/bench/JmhWriterBench.scala b/modules/benchmarks/src/main/scala/json/bench/JmhWriterBench.scala index 60bcae5c..317b50f7 100644 --- a/modules/benchmarks/src/main/scala/json/bench/JmhWriterBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/JmhWriterBench.scala @@ -12,13 +12,15 @@ import org.openjdk.jmh.annotations._ @Fork(value = 1, jvmArgsAppend = Array("-Xms1G", "-Xmx1G")) @State(Scope.Benchmark) class JmhWriterBench { - @Param(Array( - "128b", - "1kb", - "128kb", - "1mb", - "32mb" - )) + @Param( + Array( + "128b", + "1kb", + "128kb", + "1mb", + "32mb" + ) + ) var jsonSize: String = _ val seed = 10000 @@ -27,22 +29,24 @@ class JmhWriterBench { @Setup(Level.Trial) def setup(): Unit = { data = jsonSize match { - case "128b" => Data.dataSamples(1, seed) - case "1kb" => Data.dataSamples(8, seed) + case "128b" => Data.dataSamples(1, seed) + case "1kb" => Data.dataSamples(8, seed) case "128kb" => Data.dataSamples(128 * 8, seed) - case "1mb" => Data.dataSamples(8 * 128 * 8, seed) - case "32mb" => Data.dataSamples(32 * 8 * 128 * 8, seed) + case "1mb" => Data.dataSamples(8 * 128 * 8, seed) + case "32mb" => Data.dataSamples(32 * 8 * 128 * 8, seed) } } - @Param(Array( - "tethys-jackson", - "pure-jackson", - "circe", - "play-json", - "spray-json", - "zio-json" - )) + @Param( + Array( + "tethys-jackson", + "pure-jackson", + "circe", + "play-json", + "spray-json", + "zio-json" + ) + ) var processorName: String = _ @Benchmark diff --git a/modules/benchmarks/src/main/scala/json/bench/circe/CirceBench.scala b/modules/benchmarks/src/main/scala/json/bench/circe/CirceBench.scala index 87f8a2e6..1527cc68 100644 --- a/modules/benchmarks/src/main/scala/json/bench/circe/CirceBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/circe/CirceBench.scala @@ -15,10 +15,12 @@ object CirceBench { } object CirceJawnDataReader extends DataReader { - override def read(json: String): Seq[Data] = jawn.decode[Seq[Data]](json).toOption.get + override def read(json: String): Seq[Data] = + jawn.decode[Seq[Data]](json).toOption.get } object CirceJacksonDataReader extends DataReader { - override def read(json: String): Seq[Data] = jackson.decode[Seq[Data]](json).toOption.get + override def read(json: String): Seq[Data] = + jackson.decode[Seq[Data]](json).toOption.get } } diff --git a/modules/benchmarks/src/main/scala/json/bench/handwritten/HandwrittenBench.scala b/modules/benchmarks/src/main/scala/json/bench/handwritten/HandwrittenBench.scala index 42d27f32..5b822272 100644 --- a/modules/benchmarks/src/main/scala/json/bench/handwritten/HandwrittenBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/handwritten/HandwrittenBench.scala @@ -14,10 +14,10 @@ object HandwrittenBench { val builder = new StringBuilder("[") val dataIterator = seq.iterator - if(dataIterator.hasNext) { + if (dataIterator.hasNext) { writeData(dataIterator.next(), builder) } - while(dataIterator.hasNext) { + while (dataIterator.hasNext) { writeData(dataIterator.next(), builder.append(",")) } @@ -45,10 +45,10 @@ object HandwrittenBench { .append('[') val intIter = data.seqInt.iterator - if(intIter.hasNext) { + if (intIter.hasNext) { builder.append(intIter.next()) } - while(intIter.hasNext) { + while (intIter.hasNext) { builder.append(",").append(intIter.next()) } @@ -58,11 +58,11 @@ object HandwrittenBench { .append('{') val mapStringIntIter = data.mapStringInt.iterator - if(mapStringIntIter.hasNext) { + if (mapStringIntIter.hasNext) { val (key, value) = mapStringIntIter.next() builder.appendName(key).append(value) } - while(mapStringIntIter.hasNext) { + while (mapStringIntIter.hasNext) { val (key, value) = mapStringIntIter.next() builder.appendName(key).append(value) } @@ -73,7 +73,8 @@ object HandwrittenBench { } - private implicit class ScalaBuilderOps(val builder: StringBuilder) extends AnyVal { + private implicit class ScalaBuilderOps(val builder: StringBuilder) + extends AnyVal { def appendName(name: String): StringBuilder = { builder.append('"') appendString(builder, name) @@ -89,32 +90,33 @@ object HandwrittenBench { private def appendString(builder: StringBuilder, s: String): Unit = { var i = 0 - while(i < s.length) { + while (i < s.length) { appendChar(builder, s.charAt(i)) i = i + 1 } } - private def appendChar(builder: StringBuilder, char: Char): Unit = char match { - case '\n' => builder.append("\\n") - case '\r' => builder.append("\\r") - case '\t' => builder.append("\\t") - case '\b' => builder.append("\\b") - case '\f' => builder.append("\\f") - case '\\' => builder.append("\\\\") - case '"' => builder.append("\\\"") - case _ => builder.append(char) - } + private def appendChar(builder: StringBuilder, char: Char): Unit = + char match { + case '\n' => builder.append("\\n") + case '\r' => builder.append("\\r") + case '\t' => builder.append("\\t") + case '\b' => builder.append("\\b") + case '\f' => builder.append("\\f") + case '\\' => builder.append("\\\\") + case '"' => builder.append("\\\"") + case _ => builder.append(char) + } object HandwrittenJavaDataWriter extends DataWriter { override def write(seq: Seq[Data]): String = { val builder = new java.lang.StringBuilder("[") val dataIterator = seq.iterator - if(dataIterator.hasNext) { + if (dataIterator.hasNext) { writeData(dataIterator.next(), builder) } - while(dataIterator.hasNext) { + while (dataIterator.hasNext) { writeData(dataIterator.next(), builder.append(",")) } @@ -123,7 +125,10 @@ object HandwrittenBench { .toString() } - private def writeData(data: Data, builder: java.lang.StringBuilder): Unit = { + private def writeData( + data: Data, + builder: java.lang.StringBuilder + ): Unit = { builder .append("{") .appendName("string") @@ -142,10 +147,10 @@ object HandwrittenBench { .append('[') val intIter = data.seqInt.iterator - if(intIter.hasNext) { + if (intIter.hasNext) { builder.append(intIter.next()) } - while(intIter.hasNext) { + while (intIter.hasNext) { builder.append(",").append(intIter.next()) } @@ -155,11 +160,11 @@ object HandwrittenBench { .append('{') val mapStringIntIter = data.mapStringInt.iterator - if(mapStringIntIter.hasNext) { + if (mapStringIntIter.hasNext) { val (key, value) = mapStringIntIter.next() builder.appendName(key).append(value) } - while(mapStringIntIter.hasNext) { + while (mapStringIntIter.hasNext) { val (key, value) = mapStringIntIter.next() builder.appendName(key).append(value) } @@ -169,7 +174,8 @@ object HandwrittenBench { } } - private implicit class JavaBuilderOps(val builder: java.lang.StringBuilder) extends AnyVal { + private implicit class JavaBuilderOps(val builder: java.lang.StringBuilder) + extends AnyVal { def appendName(name: String): java.lang.StringBuilder = { builder.append('"') appendString(builder, name) @@ -183,24 +189,28 @@ object HandwrittenBench { } } - private def appendString(builder: java.lang.StringBuilder, s: String): Unit = { + private def appendString( + builder: java.lang.StringBuilder, + s: String + ): Unit = { var i = 0 - while(i < s.length) { + while (i < s.length) { appendChar(builder, s.charAt(i)) i = i + 1 } } - private def appendChar(builder: java.lang.StringBuilder, char: Char): Unit = char match { - case '\n' => builder.append("\\n") - case '\r' => builder.append("\\r") - case '\t' => builder.append("\\t") - case '\b' => builder.append("\\b") - case '\f' => builder.append("\\f") - case '\\' => builder.append("\\\\") - case '"' => builder.append("\\\"") - case _ => builder.append(char) - } + private def appendChar(builder: java.lang.StringBuilder, char: Char): Unit = + char match { + case '\n' => builder.append("\\n") + case '\r' => builder.append("\\r") + case '\t' => builder.append("\\t") + case '\b' => builder.append("\\b") + case '\f' => builder.append("\\f") + case '\\' => builder.append("\\\\") + case '"' => builder.append("\\\"") + case _ => builder.append(char) + } object HandwrittenJacksonDataProcessor extends DataWriter with DataReader { private val jsonFactory = { @@ -227,7 +237,7 @@ object HandwrittenBench { generator.writeStartArray() val dataIterator = seq.iterator - while(dataIterator.hasNext) { + while (dataIterator.hasNext) { writeData(dataIterator.next(), generator) } @@ -251,11 +261,10 @@ object HandwrittenBench { generator.writeFieldName("bigDecimal") generator.writeNumber(data.bigDecimal.bigDecimal) - generator.writeFieldName("seqInt") generator.writeStartArray() val intIter = data.seqInt.iterator - while(intIter.hasNext) { + while (intIter.hasNext) { generator.writeNumber(intIter.next) } generator.writeEndArray() @@ -264,7 +273,7 @@ object HandwrittenBench { generator.writeStartObject() val mapStringIntIter = data.mapStringInt.iterator - while(mapStringIntIter.hasNext) { + while (mapStringIntIter.hasNext) { val (key, value) = mapStringIntIter.next() generator.writeFieldName(key) generator.writeNumber(value) @@ -278,7 +287,7 @@ object HandwrittenBench { val parser = jsonParser(json) val builder = Seq.newBuilder[Data] require(parser.nextToken() == JsonToken.START_ARRAY) - while(parser.nextToken() != JsonToken.END_ARRAY) { + while (parser.nextToken() != JsonToken.END_ARRAY) { builder += readDataObject(parser) } builder.result() @@ -303,24 +312,24 @@ object HandwrittenBench { var mapStringIntField: Map[String, Int] = null var mapStringIntFieldInitialized: Boolean = false - while(parser.nextToken() != JsonToken.END_OBJECT) { + while (parser.nextToken() != JsonToken.END_OBJECT) { val field = parser.getCurrentName - if(field == "string") { + if (field == "string") { stringField = parser.nextTextValue() stringFieldInitialized = true - } else if(field == "int") { + } else if (field == "int") { parser.nextToken() intField = parser.getIntValue intFieldInitialized = true - } else if(field == "boolean") { + } else if (field == "boolean") { booleanField = parser.nextBooleanValue() booleanFieldInitialized = true - } else if(field == "bigDecimal") { + } else if (field == "bigDecimal") { parser.nextToken() bigDecimalField = BigDecimal(parser.getNumberValue.doubleValue()) bigDecimalFieldInitialized = true - } else if(field == "seqInt") { + } else if (field == "seqInt") { seqIntField = readSeqOfInt(parser) seqIntFieldInitialized = true } else { @@ -329,7 +338,9 @@ object HandwrittenBench { } } - require(stringFieldInitialized && intFieldInitialized && booleanFieldInitialized && bigDecimalFieldInitialized && mapStringIntFieldInitialized) + require( + stringFieldInitialized && intFieldInitialized && booleanFieldInitialized && bigDecimalFieldInitialized && mapStringIntFieldInitialized + ) Data( string = stringField, diff --git a/modules/benchmarks/src/main/scala/json/bench/json4s/Json4sBench.scala b/modules/benchmarks/src/main/scala/json/bench/json4s/Json4sBench.scala index ce5c3656..c1a17b71 100644 --- a/modules/benchmarks/src/main/scala/json/bench/json4s/Json4sBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/json4s/Json4sBench.scala @@ -8,14 +8,18 @@ object Json4sBench { implicit val format: DefaultFormats.type = DefaultFormats object Json4sNativeDataProcessor extends DataWriter with DataReader { - override def write(seq: Seq[Data]): String = org.json4s.native.Serialization.write(seq) + override def write(seq: Seq[Data]): String = + org.json4s.native.Serialization.write(seq) - override def read(json: String): Seq[Data] = org.json4s.native.parseJson(json).extract[Seq[Data]] + override def read(json: String): Seq[Data] = + org.json4s.native.parseJson(json).extract[Seq[Data]] } object Json4sJacksonDataProcessor extends DataWriter with DataReader { - override def write(seq: Seq[Data]): String = org.json4s.jackson.Serialization.write(seq) + override def write(seq: Seq[Data]): String = + org.json4s.jackson.Serialization.write(seq) - override def read(json: String): Seq[Data] = org.json4s.jackson.parseJson(json).extract[Seq[Data]] + override def read(json: String): Seq[Data] = + org.json4s.jackson.parseJson(json).extract[Seq[Data]] } } diff --git a/modules/benchmarks/src/main/scala/json/bench/model/Data.scala b/modules/benchmarks/src/main/scala/json/bench/model/Data.scala index a171da38..b6674018 100644 --- a/modules/benchmarks/src/main/scala/json/bench/model/Data.scala +++ b/modules/benchmarks/src/main/scala/json/bench/model/Data.scala @@ -2,16 +2,22 @@ package json.bench.model import scala.util.Random -case class Data(string: String, - int: Int, - boolean: Boolean, - bigDecimal: BigDecimal, - seqInt: Seq[Int], - mapStringInt: Map[String, Int]) +case class Data( + string: String, + int: Int, + boolean: Boolean, + bigDecimal: BigDecimal, + seqInt: Seq[Int], + mapStringInt: Map[String, Int] +) object Data { - def samples[JAst](dataBuilder: DataBuilder[JAst], count: Int, seed: Int): JAst = { + def samples[JAst]( + dataBuilder: DataBuilder[JAst], + count: Int, + seed: Int + ): JAst = { val asts = dataSamples(count, seed).map(dataBuilder.ast) dataBuilder.array(asts) } @@ -27,7 +33,7 @@ object Data { (1 to count).toList.map { i => val flag = (i % 2) == 0 - //128 bytes entity + // 128 bytes entity Data( // 2 bytes string = rndString(6 - (if (flag) 0 else 1)), // 9 + 8 (7) + 1 bytes int = rndInt(3), // 6 + 3 + 1 bytes diff --git a/modules/benchmarks/src/main/scala/json/bench/play/PlayBench.scala b/modules/benchmarks/src/main/scala/json/bench/play/PlayBench.scala index 085c61f8..7316cf45 100644 --- a/modules/benchmarks/src/main/scala/json/bench/play/PlayBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/play/PlayBench.scala @@ -10,7 +10,8 @@ object PlayBench { implicit val dataReads: Reads[Data] = Json.reads[Data] object PlayDataProcessor extends DataWriter with DataReader { - override def write(seq: Seq[Data]): String = Json.stringify(Json.toJson(seq)) + override def write(seq: Seq[Data]): String = + Json.stringify(Json.toJson(seq)) override def read(json: String): Seq[Data] = Json.parse(json).as[Seq[Data]] } diff --git a/modules/benchmarks/src/main/scala/json/bench/spray/SprayBench.scala b/modules/benchmarks/src/main/scala/json/bench/spray/SprayBench.scala index a5f87a54..849fd6de 100644 --- a/modules/benchmarks/src/main/scala/json/bench/spray/SprayBench.scala +++ b/modules/benchmarks/src/main/scala/json/bench/spray/SprayBench.scala @@ -12,7 +12,8 @@ object SprayBench { object SprayDataProcessor extends DataWriter with DataReader { override def write(seq: Seq[Data]): String = seq.toJson.compactPrint - override def read(json: String): Seq[Data] = json.parseJson.convertTo[Seq[Data]] + override def read(json: String): Seq[Data] = + json.parseJson.convertTo[Seq[Data]] } } diff --git a/modules/core/src/main/scala-2.12/tethys/compat/CollectionBuilder.scala b/modules/core/src/main/scala-2.12/tethys/compat/CollectionBuilder.scala index c1d6a909..3b6b722b 100644 --- a/modules/core/src/main/scala-2.12/tethys/compat/CollectionBuilder.scala +++ b/modules/core/src/main/scala-2.12/tethys/compat/CollectionBuilder.scala @@ -9,11 +9,15 @@ trait CollectionBuilder[A, C] { } object CollectionBuilder { - implicit def seqCBFBuilder[A, C[_]](implicit cbf: CanBuildFrom[Nothing, A, C[A]]): CollectionBuilder[A, C[A]] = new CollectionBuilder[A, C[A]] { + implicit def seqCBFBuilder[A, C[_]](implicit + cbf: CanBuildFrom[Nothing, A, C[A]] + ): CollectionBuilder[A, C[A]] = new CollectionBuilder[A, C[A]] { override def newBuilder: mutable.Builder[A, C[A]] = cbf() } - implicit def mapCBFBuilder[K, V, M[_, _]](implicit cbf: CanBuildFrom[Nothing, (K, V), M[K, V]]): CollectionBuilder[(K, V), M[K, V]] = + implicit def mapCBFBuilder[K, V, M[_, _]](implicit + cbf: CanBuildFrom[Nothing, (K, V), M[K, V]] + ): CollectionBuilder[(K, V), M[K, V]] = new CollectionBuilder[(K, V), M[K, V]] { override def newBuilder: mutable.Builder[(K, V), M[K, V]] = cbf() } diff --git a/modules/core/src/main/scala-2.12/tethys/derivation/JsonObjectWriterDerivation.scala b/modules/core/src/main/scala-2.12/tethys/derivation/JsonObjectWriterDerivation.scala index 83887922..bc60e856 100644 --- a/modules/core/src/main/scala-2.12/tethys/derivation/JsonObjectWriterDerivation.scala +++ b/modules/core/src/main/scala-2.12/tethys/derivation/JsonObjectWriterDerivation.scala @@ -1,6 +1,3 @@ package tethys.derivation - -private [tethys] trait JsonObjectWriterDerivation { - -} \ No newline at end of file +private[tethys] trait JsonObjectWriterDerivation {} diff --git a/modules/core/src/main/scala-2.12/tethys/derivation/JsonReaderDerivation.scala b/modules/core/src/main/scala-2.12/tethys/derivation/JsonReaderDerivation.scala index b9cd2274..2e70a0e0 100644 --- a/modules/core/src/main/scala-2.12/tethys/derivation/JsonReaderDerivation.scala +++ b/modules/core/src/main/scala-2.12/tethys/derivation/JsonReaderDerivation.scala @@ -1,6 +1,3 @@ package tethys.derivation - -private [tethys] trait JsonReaderDerivation { - -} \ No newline at end of file +private[tethys] trait JsonReaderDerivation {} diff --git a/modules/core/src/main/scala-2.13+/tethys/compat/CollectionBuilder.scala b/modules/core/src/main/scala-2.13+/tethys/compat/CollectionBuilder.scala index 3907754d..002a8478 100644 --- a/modules/core/src/main/scala-2.13+/tethys/compat/CollectionBuilder.scala +++ b/modules/core/src/main/scala-2.13+/tethys/compat/CollectionBuilder.scala @@ -1,6 +1,11 @@ package tethys.compat -import scala.collection.{IterableFactory, IterableFactoryDefaults, MapFactory, mutable} +import scala.collection.{ + IterableFactory, + IterableFactoryDefaults, + MapFactory, + mutable +} import scala.language.experimental.macros import scala.language.higherKinds import scala.reflect.macros.blackbox @@ -11,29 +16,45 @@ trait CollectionBuilder[A, C] { object CollectionBuilder { - final class IterableFactoryCollectionBuilder[A, C[_]](factory: IterableFactory[C]) extends CollectionBuilder[A, C[A]] { + final class IterableFactoryCollectionBuilder[A, C[_]]( + factory: IterableFactory[C] + ) extends CollectionBuilder[A, C[A]] { override def newBuilder: mutable.Builder[A, C[A]] = factory.newBuilder[A] } - final class MapFactoryCollectionBuilder[K, V, M[_, _]](factory: MapFactory[M]) extends CollectionBuilder[(K, V), M[K, V]] { - override def newBuilder: mutable.Builder[(K, V), M[K, V]] = factory.newBuilder[K, V] + final class MapFactoryCollectionBuilder[K, V, M[_, _]](factory: MapFactory[M]) + extends CollectionBuilder[(K, V), M[K, V]] { + override def newBuilder: mutable.Builder[(K, V), M[K, V]] = + factory.newBuilder[K, V] } - implicit def iterableFactoryCollectionBuilder[A, C[X] <: IterableFactoryDefaults[X, C]]: IterableFactoryCollectionBuilder[A, C] = macro CollectionBuilderMacroImpl.fromIterableFactory[A, C] - implicit def mapFactoryCollectionBuilder[K, V, M[X, Y] <: scala.collection.Map[X, Y]]: CollectionBuilder[(K, V), M[K, V]] = macro CollectionBuilderMacroImpl.fromMapFactory[K, V, M] + implicit def iterableFactoryCollectionBuilder[A, C[ + X + ] <: IterableFactoryDefaults[X, C]] + : IterableFactoryCollectionBuilder[A, C] = macro + CollectionBuilderMacroImpl.fromIterableFactory[A, C] + implicit def mapFactoryCollectionBuilder[K, V, M[ + X, + Y + ] <: scala.collection.Map[X, Y]]: CollectionBuilder[(K, V), M[K, V]] = macro + CollectionBuilderMacroImpl.fromMapFactory[K, V, M] private class CollectionBuilderMacroImpl(val c: blackbox.Context) { import c.universe._ - def fromIterableFactory[A, C[X] <: IterableFactoryDefaults[X, C]](implicit A: WeakTypeTag[A], C: WeakTypeTag[C[A]]): Tree = { + def fromIterableFactory[A, C[X] <: IterableFactoryDefaults[X, C]](implicit + A: WeakTypeTag[A], + C: WeakTypeTag[C[A]] + ): Tree = { val ref = C.tpe.typeSymbol.companion q"new tethys.compat.CollectionBuilder.IterableFactoryCollectionBuilder[${A.tpe}, ${C.tpe}]($ref)" } def fromMapFactory[K, V, M[X, Y] <: scala.collection.Map[X, Y]](implicit - K: WeakTypeTag[K], - V: WeakTypeTag[V], - M: WeakTypeTag[M[K, V]]): Tree = { + K: WeakTypeTag[K], + V: WeakTypeTag[V], + M: WeakTypeTag[M[K, V]] + ): Tree = { val ref = M.tpe.typeSymbol.companion q"new tethys.compat.CollectionBuilder.MapFactoryCollectionBuilder[${K.tpe}, ${V.tpe}, ${M.tpe}]($ref)" } diff --git a/modules/core/src/main/scala-2.13+/tethys/derivation/JsonObjectWriterDerivation.scala b/modules/core/src/main/scala-2.13+/tethys/derivation/JsonObjectWriterDerivation.scala index 83887922..bc60e856 100644 --- a/modules/core/src/main/scala-2.13+/tethys/derivation/JsonObjectWriterDerivation.scala +++ b/modules/core/src/main/scala-2.13+/tethys/derivation/JsonObjectWriterDerivation.scala @@ -1,6 +1,3 @@ package tethys.derivation - -private [tethys] trait JsonObjectWriterDerivation { - -} \ No newline at end of file +private[tethys] trait JsonObjectWriterDerivation {} diff --git a/modules/core/src/main/scala-2.13+/tethys/derivation/JsonReaderDerivation.scala b/modules/core/src/main/scala-2.13+/tethys/derivation/JsonReaderDerivation.scala index b9cd2274..2e70a0e0 100644 --- a/modules/core/src/main/scala-2.13+/tethys/derivation/JsonReaderDerivation.scala +++ b/modules/core/src/main/scala-2.13+/tethys/derivation/JsonReaderDerivation.scala @@ -1,6 +1,3 @@ package tethys.derivation - -private [tethys] trait JsonReaderDerivation { - -} \ No newline at end of file +private[tethys] trait JsonReaderDerivation {} diff --git a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysEnum.scala b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysEnum.scala index 79829924..e4ca42b8 100644 --- a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysEnum.scala +++ b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysEnum.scala @@ -6,4 +6,4 @@ import tethys.{JsonReader, JsonWriter} trait TethysEnum[A <: EnumEntry] { _: Enum[A] => implicit val tethysReader: JsonReader[A] = Enumeratum.reader(this) implicit val tethysWriter: JsonWriter[A] = Enumeratum.writer(this) -} \ No newline at end of file +} diff --git a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysKeyEnum.scala b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysKeyEnum.scala index 6720f992..a2d7e4ae 100644 --- a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysKeyEnum.scala +++ b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysKeyEnum.scala @@ -5,6 +5,7 @@ import tethys.readers.KeyReader import tethys.writers.KeyWriter trait TethysKeyEnum[A <: EnumEntry] { _: Enum[A] => - implicit val tethysKeyReader: KeyReader[A] = Enumeratum.keyReader(this)(_.withNameOption) + implicit val tethysKeyReader: KeyReader[A] = + Enumeratum.keyReader(this)(_.withNameOption) implicit val tethysKeyWriter: KeyWriter[A] = Enumeratum.keyWriter(_.entryName) -} \ No newline at end of file +} diff --git a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysValueEnum.scala b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysValueEnum.scala index fc3a68e9..7a2669c2 100644 --- a/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysValueEnum.scala +++ b/modules/enumeratum/src/main/scala-2/tethys/enumeratum/TethysValueEnum.scala @@ -5,29 +5,37 @@ import tethys.readers.KeyReader import tethys.writers.KeyWriter import tethys.{JsonReader, JsonWriter} -sealed trait TethysValueEnum[ValueType, EntryType <: ValueEnumEntry[ValueType]] { _: ValueEnum[ValueType, EntryType] => +sealed trait TethysValueEnum[ + ValueType, + EntryType <: ValueEnumEntry[ValueType] +] { _: ValueEnum[ValueType, EntryType] => implicit def tethysReader: JsonReader[EntryType] implicit def tethysWriter: JsonWriter[EntryType] } -trait StringTethysEnum[E <: StringEnumEntry] extends TethysValueEnum[String, E] { _: ValueEnum[String, E] => +trait StringTethysEnum[E <: StringEnumEntry] + extends TethysValueEnum[String, E] { _: ValueEnum[String, E] => implicit val tethysReader: JsonReader[E] = Enumeratum.valueReader(this) implicit val tethysWriter: JsonWriter[E] = Enumeratum.valueWriter(this) - implicit val tethysKeyReader: KeyReader[E] = Enumeratum.keyReader(this)(_.withValueOpt) + implicit val tethysKeyReader: KeyReader[E] = + Enumeratum.keyReader(this)(_.withValueOpt) implicit val tethysKeyWriter: KeyWriter[E] = Enumeratum.keyWriter(_.value) } -trait IntTethysEnum[E <: IntEnumEntry] extends TethysValueEnum[Int, E] { _: ValueEnum[Int, E] => +trait IntTethysEnum[E <: IntEnumEntry] extends TethysValueEnum[Int, E] { + _: ValueEnum[Int, E] => implicit val tethysReader: JsonReader[E] = Enumeratum.valueReader(this) implicit val tethysWriter: JsonWriter[E] = Enumeratum.valueWriter(this) } -trait LongTethysEnum[E <: LongEnumEntry] extends TethysValueEnum[Long, E] { _: ValueEnum[Long, E] => +trait LongTethysEnum[E <: LongEnumEntry] extends TethysValueEnum[Long, E] { + _: ValueEnum[Long, E] => implicit val tethysReader: JsonReader[E] = Enumeratum.valueReader(this) implicit val tethysWriter: JsonWriter[E] = Enumeratum.valueWriter(this) } -trait ShortTethysEnum[E <: ShortEnumEntry] extends TethysValueEnum[Short, E] { _: ValueEnum[Short, E] => +trait ShortTethysEnum[E <: ShortEnumEntry] extends TethysValueEnum[Short, E] { + _: ValueEnum[Short, E] => implicit val tethysReader: JsonReader[E] = Enumeratum.valueReader(this) implicit val tethysWriter: JsonWriter[E] = Enumeratum.valueWriter(this) -} \ No newline at end of file +} diff --git a/modules/enumeratum/src/test/scala-2/tethys/enumeratum/Direction.scala b/modules/enumeratum/src/test/scala-2/tethys/enumeratum/Direction.scala index 4d7a694a..1eabbc1f 100644 --- a/modules/enumeratum/src/test/scala-2/tethys/enumeratum/Direction.scala +++ b/modules/enumeratum/src/test/scala-2/tethys/enumeratum/Direction.scala @@ -3,11 +3,14 @@ package tethys.enumeratum import enumeratum.{Enum, EnumEntry} sealed trait Direction extends EnumEntry -case object Direction extends Enum[Direction] with TethysEnum[Direction] with TethysKeyEnum[Direction] { - case object Up extends Direction - case object Down extends Direction - case object Left extends Direction +case object Direction + extends Enum[Direction] + with TethysEnum[Direction] + with TethysKeyEnum[Direction] { + case object Up extends Direction + case object Down extends Direction + case object Left extends Direction case object Right extends Direction val values = findValues -} \ No newline at end of file +} diff --git a/modules/enumeratum/src/test/scala-2/tethys/enumeratum/EnumeratumSupportTest.scala b/modules/enumeratum/src/test/scala-2/tethys/enumeratum/EnumeratumSupportTest.scala index 0c2f72dc..0f2da228 100644 --- a/modules/enumeratum/src/test/scala-2/tethys/enumeratum/EnumeratumSupportTest.scala +++ b/modules/enumeratum/src/test/scala-2/tethys/enumeratum/EnumeratumSupportTest.scala @@ -9,7 +9,10 @@ import tethys.commons.TokenNode.{value => token, _} import tethys.readers.{FieldName, ReaderError} import tethys.writers.tokens.SimpleTokenWriter._ -class EnumeratumSupportTest extends AnyFlatSpec with Matchers with EitherValues { +class EnumeratumSupportTest + extends AnyFlatSpec + with Matchers + with EitherValues { behavior of "TethysEnum" it should "work for encode" in { @@ -27,27 +30,47 @@ class EnumeratumSupportTest extends AnyFlatSpec with Matchers with EitherValues it should "fail for decode with unknown value" in { implicit val field = FieldName().appendFieldName("direction") - (the [ReaderError] thrownBy obj("direction" -> "Wat").tokensAs[Data]).getMessage shouldBe - ReaderError.catchNonFatal(ReaderError.wrongJson("Wat is not a member of enum Direction")).left.value.getMessage + (the[ReaderError] thrownBy obj("direction" -> "Wat") + .tokensAs[Data]).getMessage shouldBe + ReaderError + .catchNonFatal( + ReaderError.wrongJson("Wat is not a member of enum Direction") + ) + .left + .value + .getMessage - for (json <- List(token(1), token(1.0), token("null"), token(false), obj(), arr())) { + for ( + json <- List( + token(1), + token(1.0), + token("null"), + token(false), + obj(), + arr() + ) + ) { Try(json.tokensAs[Direction]).toOption shouldBe None } } - behavior of "TethysKeyEnum" // FIXME Type Inference doesn't work somehow w/o typehint val directions: Map[Direction, Int] = Map( - Direction.Up -> 1, - Direction.Down -> 2, - Direction.Left -> 3, + Direction.Up -> 1, + Direction.Down -> 2, + Direction.Left -> 3, Direction.Right -> 4 ) it should "work for encode" in { - directions.asTokenList shouldBe obj("Up" -> token(1), "Down" -> token(2), "Left" -> token(3), "Right" -> token(4)) + directions.asTokenList shouldBe obj( + "Up" -> token(1), + "Down" -> token(2), + "Left" -> token(3), + "Right" -> token(4) + ) } it should "work for decode" in { diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/AutoDerivation.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/AutoDerivation.scala index cc1b897e..0db98889 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/AutoDerivation.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/AutoDerivation.scala @@ -7,6 +7,10 @@ import tethys.{JsonObjectWriter, JsonReader} import scala.language.experimental.macros trait AutoDerivation { - implicit def jsonWriterMaterializer[A]: LowPriorityInstance[JsonObjectWriter[A]] = macro AutoDerivationMacro.jsonWriter[A] - implicit def jsonReaderMaterializer[A]: LowPriorityInstance[JsonReader[A]] = macro AutoDerivationMacro.jsonReader[A] + implicit def jsonWriterMaterializer[A] + : LowPriorityInstance[JsonObjectWriter[A]] = macro + AutoDerivationMacro.jsonWriter[A] + implicit def jsonReaderMaterializer[A] + : LowPriorityInstance[JsonReader[A]] = macro + AutoDerivationMacro.jsonReader[A] } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/SemiautoDerivation.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/SemiautoDerivation.scala index 8ae4cbf9..e1ef5343 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/SemiautoDerivation.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/SemiautoDerivation.scala @@ -1,7 +1,10 @@ package tethys.derivation import tethys.derivation.builder._ -import tethys.derivation.impl.builder.{ReaderDescriptionMacro, WriterDescriptorMacro} +import tethys.derivation.impl.builder.{ + ReaderDescriptionMacro, + WriterDescriptorMacro +} import tethys.derivation.impl.derivation.SemiautoDerivationMacro import tethys.{JsonObjectWriter, JsonReader} @@ -9,19 +12,29 @@ import scala.annotation.compileTimeOnly import scala.language.experimental.macros trait SemiautoDerivation { - def jsonWriter[A]: JsonObjectWriter[A] = macro SemiautoDerivationMacro.simpleJsonWriter[A] - def jsonWriter[A](description: WriterDescription[A]): JsonObjectWriter[A] = macro SemiautoDerivationMacro.describedJsonWriter[A] - def jsonWriter[A](builder: WriterBuilder[A]): JsonObjectWriter[A] = macro SemiautoDerivationMacro.jsonWriterWithBuilder[A] - def jsonWriter[A](config: WriterDerivationConfig): JsonObjectWriter[A] = macro SemiautoDerivationMacro.jsonWriterWithConfig[A] - - def describe[A](builder: WriterBuilder[A]): WriterDescription[A] = macro WriterDescriptorMacro.simpleDescription[A] - - def jsonReader[A]: JsonReader[A] = macro SemiautoDerivationMacro.simpleJsonReader[A] - def jsonReader[A](description: ReaderDescription[A]): JsonReader[A] = macro SemiautoDerivationMacro.describedJsonReader[A] - def jsonReader[A](builder: ReaderBuilder[A]): JsonReader[A] = macro SemiautoDerivationMacro.jsonReaderWithBuilder[A] - def jsonReader[A](config: ReaderDerivationConfig): JsonReader[A] = macro SemiautoDerivationMacro.jsonReaderWithConfig[A] - - def describe[A](builder: ReaderBuilder[A]): ReaderDescription[A] = macro ReaderDescriptionMacro.readerDescription[A] + def jsonWriter[A]: JsonObjectWriter[A] = macro + SemiautoDerivationMacro.simpleJsonWriter[A] + def jsonWriter[A](description: WriterDescription[A]): JsonObjectWriter[A] = macro + SemiautoDerivationMacro.describedJsonWriter[A] + def jsonWriter[A](builder: WriterBuilder[A]): JsonObjectWriter[A] = macro + SemiautoDerivationMacro.jsonWriterWithBuilder[A] + def jsonWriter[A](config: WriterDerivationConfig): JsonObjectWriter[A] = macro + SemiautoDerivationMacro.jsonWriterWithConfig[A] + + def describe[A](builder: WriterBuilder[A]): WriterDescription[A] = macro + WriterDescriptorMacro.simpleDescription[A] + + def jsonReader[A]: JsonReader[A] = macro + SemiautoDerivationMacro.simpleJsonReader[A] + def jsonReader[A](description: ReaderDescription[A]): JsonReader[A] = macro + SemiautoDerivationMacro.describedJsonReader[A] + def jsonReader[A](builder: ReaderBuilder[A]): JsonReader[A] = macro + SemiautoDerivationMacro.jsonReaderWithBuilder[A] + def jsonReader[A](config: ReaderDerivationConfig): JsonReader[A] = macro + SemiautoDerivationMacro.jsonReaderWithConfig[A] + + def describe[A](builder: ReaderBuilder[A]): ReaderDescription[A] = macro + ReaderDescriptionMacro.readerDescription[A] implicit class ReaderFieldStringOps(val s: String) { diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/DependentField.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/DependentField.scala index e02f6707..1a89b04e 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/DependentField.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/DependentField.scala @@ -9,729 +9,14533 @@ sealed trait DependentField0[A, B] { def from[T1](f1: (A) => T1): DependentField1[A, B, T1] def from[T1, T2](f1: (A) => T1, f2: (A) => T2): DependentField2[A, B, T1, T2] - def from[T1, T2, T3](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3): DependentField3[A, B, T1, T2, T3] - def from[T1, T2, T3, T4](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4): DependentField4[A, B, T1, T2, T3, T4] - def from[T1, T2, T3, T4, T5](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5): DependentField5[A, B, T1, T2, T3, T4, T5] - def from[T1, T2, T3, T4, T5, T6](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6): DependentField6[A, B, T1, T2, T3, T4, T5, T6] - def from[T1, T2, T3, T4, T5, T6, T7](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7): DependentField7[A, B, T1, T2, T3, T4, T5, T6, T7] - def from[T1, T2, T3, T4, T5, T6, T7, T8](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f1: (A) => T1, f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def from[T1, T2, T3]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3 + ): DependentField3[A, B, T1, T2, T3] + def from[T1, T2, T3, T4]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4 + ): DependentField4[A, B, T1, T2, T3, T4] + def from[T1, T2, T3, T4, T5]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5 + ): DependentField5[A, B, T1, T2, T3, T4, T5] + def from[T1, T2, T3, T4, T5, T6]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6 + ): DependentField6[A, B, T1, T2, T3, T4, T5, T6] + def from[T1, T2, T3, T4, T5, T6, T7]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7[A, B, T1, T2, T3, T4, T5, T6, T7] + def from[T1, T2, T3, T4, T5, T6, T7, T8]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f1: (A) => T1, + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] def from[T1](f1: ReaderField[T1]): DependentField1[A, B, T1] - def from[T1, T2](f1: ReaderField[T1], f2: ReaderField[T2]): DependentField2[A, B, T1, T2] - def from[T1, T2, T3](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3]): DependentField3[A, B, T1, T2, T3] - def from[T1, T2, T3, T4](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4]): DependentField4[A, B, T1, T2, T3, T4] - def from[T1, T2, T3, T4, T5](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5]): DependentField5[A, B, T1, T2, T3, T4, T5] - def from[T1, T2, T3, T4, T5, T6](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6]): DependentField6[A, B, T1, T2, T3, T4, T5, T6] - def from[T1, T2, T3, T4, T5, T6, T7](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7[A, B, T1, T2, T3, T4, T5, T6, T7] - def from[T1, T2, T3, T4, T5, T6, T7, T8](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f1: ReaderField[T1], f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def from[T1, T2]( + f1: ReaderField[T1], + f2: ReaderField[T2] + ): DependentField2[A, B, T1, T2] + def from[T1, T2, T3]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3] + ): DependentField3[A, B, T1, T2, T3] + def from[T1, T2, T3, T4]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4] + ): DependentField4[A, B, T1, T2, T3, T4] + def from[T1, T2, T3, T4, T5]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5] + ): DependentField5[A, B, T1, T2, T3, T4, T5] + def from[T1, T2, T3, T4, T5, T6]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6] + ): DependentField6[A, B, T1, T2, T3, T4, T5, T6] + def from[T1, T2, T3, T4, T5, T6, T7]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7[A, B, T1, T2, T3, T4, T5, T6, T7] + def from[T1, T2, T3, T4, T5, T6, T7, T8]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def from[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def from[ + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f1: ReaderField[T1], + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - sealed trait DependentField1F[A, B, T1] { def apply(fun: (T1) => B): ReaderBuilder[A] } -sealed trait DependentField1[A, B, T1] - extends DependentField1F[A, B, T1] { +sealed trait DependentField1[A, B, T1] extends DependentField1F[A, B, T1] { def and[T2](f2: (A) => T2): DependentField2F[A, B, T1, T2] - def and[T2, T3](f2: (A) => T2, f3: (A) => T3): DependentField3F[A, B, T1, T2, T3] - def and[T2, T3, T4](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4): DependentField4F[A, B, T1, T2, T3, T4] - def and[T2, T3, T4, T5](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T2, T3, T4, T5, T6](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T2, T3, T4, T5, T6, T7](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T2, T3, T4, T5, T6, T7, T8](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T2, T3, T4, T5, T6, T7, T8, T9](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f2: (A) => T2, f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T2, T3]( + f2: (A) => T2, + f3: (A) => T3 + ): DependentField3F[A, B, T1, T2, T3] + def and[T2, T3, T4]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4 + ): DependentField4F[A, B, T1, T2, T3, T4] + def and[T2, T3, T4, T5]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5 + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T2, T3, T4, T5, T6]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6 + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T2, T3, T4, T5, T6, T7]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T2, T3, T4, T5, T6, T7, T8]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T2, T3, T4, T5, T6, T7, T8, T9]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f2: (A) => T2, + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] def and[T2](f2: ReaderField[T2]): DependentField2F[A, B, T1, T2] - def and[T2, T3](f2: ReaderField[T2], f3: ReaderField[T3]): DependentField3F[A, B, T1, T2, T3] - def and[T2, T3, T4](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4]): DependentField4F[A, B, T1, T2, T3, T4] - def and[T2, T3, T4, T5](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5]): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T2, T3, T4, T5, T6](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6]): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T2, T3, T4, T5, T6, T7](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T2, T3, T4, T5, T6, T7, T8](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T2, T3, T4, T5, T6, T7, T8, T9](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f2: ReaderField[T2], f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T2, T3]( + f2: ReaderField[T2], + f3: ReaderField[T3] + ): DependentField3F[A, B, T1, T2, T3] + def and[T2, T3, T4]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4] + ): DependentField4F[A, B, T1, T2, T3, T4] + def and[T2, T3, T4, T5]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5] + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T2, T3, T4, T5, T6]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6] + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T2, T3, T4, T5, T6, T7]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T2, T3, T4, T5, T6, T7, T8]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T2, T3, T4, T5, T6, T7, T8, T9]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f2: ReaderField[T2], + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - sealed trait DependentField2F[A, B, T1, T2] { def apply(fun: (T1, T2) => B): ReaderBuilder[A] } sealed trait DependentField2[A, B, T1, T2] - extends DependentField2F[A, B, T1, T2] { + extends DependentField2F[A, B, T1, T2] { def and[T3](f3: (A) => T3): DependentField3F[A, B, T1, T2, T3] - def and[T3, T4](f3: (A) => T3, f4: (A) => T4): DependentField4F[A, B, T1, T2, T3, T4] - def and[T3, T4, T5](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T3, T4, T5, T6](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T3, T4, T5, T6, T7](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T3, T4, T5, T6, T7, T8](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T3, T4, T5, T6, T7, T8, T9](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T3, T4, T5, T6, T7, T8, T9, T10](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f3: (A) => T3, f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T3, T4]( + f3: (A) => T3, + f4: (A) => T4 + ): DependentField4F[A, B, T1, T2, T3, T4] + def and[T3, T4, T5]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5 + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T3, T4, T5, T6]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6 + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T3, T4, T5, T6, T7]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T3, T4, T5, T6, T7, T8]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T3, T4, T5, T6, T7, T8, T9]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T3, T4, T5, T6, T7, T8, T9, T10]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f3: (A) => T3, + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] def and[T3](f3: ReaderField[T3]): DependentField3F[A, B, T1, T2, T3] - def and[T3, T4](f3: ReaderField[T3], f4: ReaderField[T4]): DependentField4F[A, B, T1, T2, T3, T4] - def and[T3, T4, T5](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5]): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T3, T4, T5, T6](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6]): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T3, T4, T5, T6, T7](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T3, T4, T5, T6, T7, T8](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T3, T4, T5, T6, T7, T8, T9](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T3, T4, T5, T6, T7, T8, T9, T10](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f3: ReaderField[T3], f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T3, T4]( + f3: ReaderField[T3], + f4: ReaderField[T4] + ): DependentField4F[A, B, T1, T2, T3, T4] + def and[T3, T4, T5]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5] + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T3, T4, T5, T6]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6] + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T3, T4, T5, T6, T7]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T3, T4, T5, T6, T7, T8]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T3, T4, T5, T6, T7, T8, T9]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T3, T4, T5, T6, T7, T8, T9, T10]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f3: ReaderField[T3], + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - sealed trait DependentField3F[A, B, T1, T2, T3] { def apply(fun: (T1, T2, T3) => B): ReaderBuilder[A] } sealed trait DependentField3[A, B, T1, T2, T3] - extends DependentField3F[A, B, T1, T2, T3] { + extends DependentField3F[A, B, T1, T2, T3] { def and[T4](f4: (A) => T4): DependentField4F[A, B, T1, T2, T3, T4] - def and[T4, T5](f4: (A) => T4, f5: (A) => T5): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T4, T5, T6](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T4, T5, T6, T7](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T4, T5, T6, T7, T8](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T4, T5, T6, T7, T8, T9](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T4, T5, T6, T7, T8, T9, T10](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T4, T5, T6, T7, T8, T9, T10, T11](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f4: (A) => T4, f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T4, T5]( + f4: (A) => T4, + f5: (A) => T5 + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T4, T5, T6]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6 + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T4, T5, T6, T7]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T4, T5, T6, T7, T8]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T4, T5, T6, T7, T8, T9]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T4, T5, T6, T7, T8, T9, T10]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T4, T5, T6, T7, T8, T9, T10, T11]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f4: (A) => T4, + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] def and[T4](f4: ReaderField[T4]): DependentField4F[A, B, T1, T2, T3, T4] - def and[T4, T5](f4: ReaderField[T4], f5: ReaderField[T5]): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T4, T5, T6](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6]): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T4, T5, T6, T7](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T4, T5, T6, T7, T8](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T4, T5, T6, T7, T8, T9](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T4, T5, T6, T7, T8, T9, T10](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T4, T5, T6, T7, T8, T9, T10, T11](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f4: ReaderField[T4], f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T4, T5]( + f4: ReaderField[T4], + f5: ReaderField[T5] + ): DependentField5F[A, B, T1, T2, T3, T4, T5] + def and[T4, T5, T6]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6] + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T4, T5, T6, T7]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T4, T5, T6, T7, T8]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T4, T5, T6, T7, T8, T9]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T4, T5, T6, T7, T8, T9, T10]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T4, T5, T6, T7, T8, T9, T10, T11]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f4: ReaderField[T4], + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - sealed trait DependentField4F[A, B, T1, T2, T3, T4] { def apply(fun: (T1, T2, T3, T4) => B): ReaderBuilder[A] } sealed trait DependentField4[A, B, T1, T2, T3, T4] - extends DependentField4F[A, B, T1, T2, T3, T4] { + extends DependentField4F[A, B, T1, T2, T3, T4] { def and[T5](f5: (A) => T5): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T5, T6](f5: (A) => T5, f6: (A) => T6): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T5, T6, T7](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T5, T6, T7, T8](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T5, T6, T7, T8, T9](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T5, T6, T7, T8, T9, T10](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T5, T6, T7, T8, T9, T10, T11](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T5, T6, T7, T8, T9, T10, T11, T12](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f5: (A) => T5, f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T5, T6]( + f5: (A) => T5, + f6: (A) => T6 + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T5, T6, T7]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T5, T6, T7, T8]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T5, T6, T7, T8, T9]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T5, T6, T7, T8, T9, T10]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T5, T6, T7, T8, T9, T10, T11]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T5, T6, T7, T8, T9, T10, T11, T12]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f5: (A) => T5, + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] def and[T5](f5: ReaderField[T5]): DependentField5F[A, B, T1, T2, T3, T4, T5] - def and[T5, T6](f5: ReaderField[T5], f6: ReaderField[T6]): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T5, T6, T7](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T5, T6, T7, T8](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T5, T6, T7, T8, T9](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T5, T6, T7, T8, T9, T10](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T5, T6, T7, T8, T9, T10, T11](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T5, T6, T7, T8, T9, T10, T11, T12](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f5: ReaderField[T5], f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T5, T6]( + f5: ReaderField[T5], + f6: ReaderField[T6] + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T5, T6, T7]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T5, T6, T7, T8]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T5, T6, T7, T8, T9]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T5, T6, T7, T8, T9, T10]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T5, T6, T7, T8, T9, T10, T11]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T5, T6, T7, T8, T9, T10, T11, T12]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f5: ReaderField[T5], + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - sealed trait DependentField5F[A, B, T1, T2, T3, T4, T5] { def apply(fun: (T1, T2, T3, T4, T5) => B): ReaderBuilder[A] } sealed trait DependentField5[A, B, T1, T2, T3, T4, T5] - extends DependentField5F[A, B, T1, T2, T3, T4, T5] { + extends DependentField5F[A, B, T1, T2, T3, T4, T5] { def and[T6](f6: (A) => T6): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T6, T7](f6: (A) => T6, f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T6, T7, T8](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T6, T7, T8, T9](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T6, T7, T8, T9, T10](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T6, T7, T8, T9, T10, T11](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T6, T7, T8, T9, T10, T11, T12](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T6, T7, T8, T9, T10, T11, T12, T13](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f6: (A) => T6, f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T6](f6: ReaderField[T6]): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] - def and[T6, T7](f6: ReaderField[T6], f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T6, T7, T8](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T6, T7, T8, T9](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T6, T7, T8, T9, T10](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T6, T7, T8, T9, T10, T11](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T6, T7, T8, T9, T10, T11, T12](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T6, T7, T8, T9, T10, T11, T12, T13](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f6: ReaderField[T6], f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + def and[T6, T7]( + f6: (A) => T6, + f7: (A) => T7 + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T6, T7, T8]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T6, T7, T8, T9]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T6, T7, T8, T9, T10]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T6, T7, T8, T9, T10, T11]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T6, T7, T8, T9, T10, T11, T12]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T6, T7, T8, T9, T10, T11, T12, T13]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f6: (A) => T6, + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T6]( + f6: ReaderField[T6] + ): DependentField6F[A, B, T1, T2, T3, T4, T5, T6] + def and[T6, T7]( + f6: ReaderField[T6], + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T6, T7, T8]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T6, T7, T8, T9]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T6, T7, T8, T9, T10]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T6, T7, T8, T9, T10, T11]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T6, T7, T8, T9, T10, T11, T12]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T6, T7, T8, T9, T10, T11, T12, T13]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f6: ReaderField[T6], + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} sealed trait DependentField6F[A, B, T1, T2, T3, T4, T5, T6] { def apply(fun: (T1, T2, T3, T4, T5, T6) => B): ReaderBuilder[A] } sealed trait DependentField6[A, B, T1, T2, T3, T4, T5, T6] - extends DependentField6F[A, B, T1, T2, T3, T4, T5, T6] { + extends DependentField6F[A, B, T1, T2, T3, T4, T5, T6] { def and[T7](f7: (A) => T7): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T7, T8](f7: (A) => T7, f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T7, T8, T9](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T7, T8, T9, T10](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T7, T8, T9, T10, T11](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T7, T8, T9, T10, T11, T12](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T7, T8, T9, T10, T11, T12, T13](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T7, T8, T9, T10, T11, T12, T13, T14](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f7: (A) => T7, f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T7](f7: ReaderField[T7]): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] - def and[T7, T8](f7: ReaderField[T7], f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T7, T8, T9](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T7, T8, T9, T10](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T7, T8, T9, T10, T11](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T7, T8, T9, T10, T11, T12](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T7, T8, T9, T10, T11, T12, T13](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T7, T8, T9, T10, T11, T12, T13, T14](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f7: ReaderField[T7], f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + def and[T7, T8]( + f7: (A) => T7, + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T7, T8, T9]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T7, T8, T9, T10]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T7, T8, T9, T10, T11]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T7, T8, T9, T10, T11, T12]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T7, T8, T9, T10, T11, T12, T13]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f7: (A) => T7, + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T7]( + f7: ReaderField[T7] + ): DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] + def and[T7, T8]( + f7: ReaderField[T7], + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T7, T8, T9]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T7, T8, T9, T10]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T7, T8, T9, T10, T11]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T7, T8, T9, T10, T11, T12]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T7, T8, T9, T10, T11, T12, T13]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[ + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f7: ReaderField[T7], + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} sealed trait DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] { def apply(fun: (T1, T2, T3, T4, T5, T6, T7) => B): ReaderBuilder[A] } sealed trait DependentField7[A, B, T1, T2, T3, T4, T5, T6, T7] - extends DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] { - def and[T8](f8: (A) => T8): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T8, T9](f8: (A) => T8, f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T8, T9, T10](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T8, T9, T10, T11](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T8, T9, T10, T11, T12](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T8, T9, T10, T11, T12, T13](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T8, T9, T10, T11, T12, T13, T14](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T8, T9, T10, T11, T12, T13, T14, T15](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f8: (A) => T8, f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T8](f8: ReaderField[T8]): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - def and[T8, T9](f8: ReaderField[T8], f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T8, T9, T10](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T8, T9, T10, T11](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T8, T9, T10, T11, T12](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T8, T9, T10, T11, T12, T13](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T8, T9, T10, T11, T12, T13, T14](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T8, T9, T10, T11, T12, T13, T14, T15](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f8: ReaderField[T8], f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + extends DependentField7F[A, B, T1, T2, T3, T4, T5, T6, T7] { + def and[T8]( + f8: (A) => T8 + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T8, T9]( + f8: (A) => T8, + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T8, T9, T10]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T8, T9, T10, T11]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T8, T9, T10, T11, T12]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T8, T9, T10, T11, T12, T13]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T8, T9, T10, T11, T12, T13, T14]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f8: (A) => T8, + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T8]( + f8: ReaderField[T8] + ): DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] + def and[T8, T9]( + f8: ReaderField[T8], + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T8, T9, T10]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T8, T9, T10, T11]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T8, T9, T10, T11, T12]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T8, T9, T10, T11, T12, T13]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T8, T9, T10, T11, T12, T13, T14]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[ + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ]( + f8: ReaderField[T8], + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} sealed trait DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] { def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8) => B): ReaderBuilder[A] } sealed trait DependentField8[A, B, T1, T2, T3, T4, T5, T6, T7, T8] - extends DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] { - def and[T9](f9: (A) => T9): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T9, T10](f9: (A) => T9, f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T9, T10, T11](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T9, T10, T11, T12](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T9, T10, T11, T12, T13](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T9, T10, T11, T12, T13, T14](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T9, T10, T11, T12, T13, T14, T15](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T9, T10, T11, T12, T13, T14, T15, T16](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f9: (A) => T9, f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T9](f9: ReaderField[T9]): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - def and[T9, T10](f9: ReaderField[T9], f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T9, T10, T11](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T9, T10, T11, T12](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T9, T10, T11, T12, T13](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T9, T10, T11, T12, T13, T14](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T9, T10, T11, T12, T13, T14, T15](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T9, T10, T11, T12, T13, T14, T15, T16](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f9: ReaderField[T9], f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + extends DependentField8F[A, B, T1, T2, T3, T4, T5, T6, T7, T8] { + def and[T9]( + f9: (A) => T9 + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T9, T10]( + f9: (A) => T9, + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T9, T10, T11]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T9, T10, T11, T12]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T9, T10, T11, T12, T13]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T9, T10, T11, T12, T13, T14]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T9, T10, T11, T12, T13, T14, T15]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f9: (A) => T9, + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T9]( + f9: ReaderField[T9] + ): DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] + def and[T9, T10]( + f9: ReaderField[T9], + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T9, T10, T11]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T9, T10, T11, T12]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T9, T10, T11, T12, T13]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T9, T10, T11, T12, T13, T14]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T9, T10, T11, T12, T13, T14, T15]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f9: ReaderField[T9], + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} sealed trait DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] { def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9) => B): ReaderBuilder[A] } sealed trait DependentField9[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] - extends DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] { - def and[T10](f10: (A) => T10): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T10, T11](f10: (A) => T10, f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T10, T11, T12](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T10, T11, T12, T13](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T10, T11, T12, T13, T14](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T10, T11, T12, T13, T14, T15](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T10, T11, T12, T13, T14, T15, T16](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T10, T11, T12, T13, T14, T15, T16, T17](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f10: (A) => T10, f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T10](f10: ReaderField[T10]): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - def and[T10, T11](f10: ReaderField[T10], f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T10, T11, T12](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T10, T11, T12, T13](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T10, T11, T12, T13, T14](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T10, T11, T12, T13, T14, T15](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T10, T11, T12, T13, T14, T15, T16](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T10, T11, T12, T13, T14, T15, T16, T17](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f10: ReaderField[T10], f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + extends DependentField9F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9] { + def and[T10]( + f10: (A) => T10 + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T10, T11]( + f10: (A) => T10, + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T10, T11, T12]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T10, T11, T12, T13]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T10, T11, T12, T13, T14]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T10, T11, T12, T13, T14, T15]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T10, T11, T12, T13, T14, T15, T16]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f10: (A) => T10, + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T10]( + f10: ReaderField[T10] + ): DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] + def and[T10, T11]( + f10: ReaderField[T10], + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T10, T11, T12]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T10, T11, T12, T13]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T10, T11, T12, T13, T14]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T10, T11, T12, T13, T14, T15]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T10, T11, T12, T13, T14, T15, T16]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f10: ReaderField[T10], + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} sealed trait DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) => B): ReaderBuilder[A] + def apply( + fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) => B + ): ReaderBuilder[A] } sealed trait DependentField10[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] - extends DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { - def and[T11](f11: (A) => T11): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T11, T12](f11: (A) => T11, f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T11, T12, T13](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T11, T12, T13, T14](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T11, T12, T13, T14, T15](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T11, T12, T13, T14, T15, T16](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T11, T12, T13, T14, T15, T16, T17](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T11, T12, T13, T14, T15, T16, T17, T18](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f11: (A) => T11, f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T11](f11: ReaderField[T11]): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - def and[T11, T12](f11: ReaderField[T11], f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T11, T12, T13](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T11, T12, T13, T14](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T11, T12, T13, T14, T15](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T11, T12, T13, T14, T15, T16](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T11, T12, T13, T14, T15, T16, T17](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T11, T12, T13, T14, T15, T16, T17, T18](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f11: ReaderField[T11], f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} - - -sealed trait DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) => B): ReaderBuilder[A] -} - -sealed trait DependentField11[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] - extends DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] { - def and[T12](f12: (A) => T12): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T12, T13](f12: (A) => T12, f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T12, T13, T14](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T12, T13, T14, T15](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T12, T13, T14, T15, T16](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T12, T13, T14, T15, T16, T17](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T12, T13, T14, T15, T16, T17, T18](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T12, T13, T14, T15, T16, T17, T18, T19](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f12: (A) => T12, f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T12](f12: ReaderField[T12]): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - def and[T12, T13](f12: ReaderField[T12], f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T12, T13, T14](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T12, T13, T14, T15](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T12, T13, T14, T15, T16](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T12, T13, T14, T15, T16, T17](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T12, T13, T14, T15, T16, T17, T18](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T12, T13, T14, T15, T16, T17, T18, T19](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f12: ReaderField[T12], f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} - - -sealed trait DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) => B): ReaderBuilder[A] -} - -sealed trait DependentField12[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] - extends DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] { - def and[T13](f13: (A) => T13): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T13, T14](f13: (A) => T13, f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T13, T14, T15](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T13, T14, T15, T16](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T13, T14, T15, T16, T17](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T13, T14, T15, T16, T17, T18](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T13, T14, T15, T16, T17, T18, T19](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T13, T14, T15, T16, T17, T18, T19, T20](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T13, T14, T15, T16, T17, T18, T19, T20, T21](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f13: (A) => T13, f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T13](f13: ReaderField[T13]): DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - def and[T13, T14](f13: ReaderField[T13], f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T13, T14, T15](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T13, T14, T15, T16](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T13, T14, T15, T16, T17](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T13, T14, T15, T16, T17, T18](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T13, T14, T15, T16, T17, T18, T19](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T13, T14, T15, T16, T17, T18, T19, T20](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T13, T14, T15, T16, T17, T18, T19, T20, T21](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](f13: ReaderField[T13], f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} - - -sealed trait DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) => B): ReaderBuilder[A] -} - -sealed trait DependentField13[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] - extends DependentField13F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] { - def and[T14](f14: (A) => T14): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T14, T15](f14: (A) => T14, f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T14, T15, T16](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T14, T15, T16, T17](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T14, T15, T16, T17, T18](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T14, T15, T16, T17, T18, T19](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T14, T15, T16, T17, T18, T19, T20](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T14, T15, T16, T17, T18, T19, T20, T21](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T14, T15, T16, T17, T18, T19, T20, T21, T22](f14: (A) => T14, f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T14](f14: ReaderField[T14]): DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - def and[T14, T15](f14: ReaderField[T14], f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T14, T15, T16](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T14, T15, T16, T17](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T14, T15, T16, T17, T18](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T14, T15, T16, T17, T18, T19](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T14, T15, T16, T17, T18, T19, T20](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T14, T15, T16, T17, T18, T19, T20, T21](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T14, T15, T16, T17, T18, T19, T20, T21, T22](f14: ReaderField[T14], f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} - - -sealed trait DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) => B): ReaderBuilder[A] -} - -sealed trait DependentField14[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] - extends DependentField14F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] { - def and[T15](f15: (A) => T15): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T15, T16](f15: (A) => T15, f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T15, T16, T17](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T15, T16, T17, T18](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T15, T16, T17, T18, T19](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T15, T16, T17, T18, T19, T20](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T15, T16, T17, T18, T19, T20, T21](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T15, T16, T17, T18, T19, T20, T21, T22](f15: (A) => T15, f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - - def and[T15](f15: ReaderField[T15]): DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - def and[T15, T16](f15: ReaderField[T15], f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T15, T16, T17](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T15, T16, T17, T18](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T15, T16, T17, T18, T19](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T15, T16, T17, T18, T19, T20](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T15, T16, T17, T18, T19, T20, T21](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T15, T16, T17, T18, T19, T20, T21, T22](f15: ReaderField[T15], f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] -} + extends DependentField10F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] { + def and[T11]( + f11: (A) => T11 + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T11, T12]( + f11: (A) => T11, + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T11, T12, T13]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13 + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T11, T12, T13, T14]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T11, T12, T13, T14, T15]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T11, T12, T13, T14, T15, T16]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T11, T12, T13, T14, T15, T16, T17]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f11: (A) => T11, + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + def and[T11]( + f11: ReaderField[T11] + ): DependentField11F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] + def and[T11, T12]( + f11: ReaderField[T11], + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T11, T12, T13]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T11, T12, T13, T14]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T11, T12, T13, T14, T15]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T11, T12, T13, T14, T15, T16]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T11, T12, T13, T14, T15, T16, T17]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f11: ReaderField[T11], + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} -sealed trait DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) => B): ReaderBuilder[A] +sealed trait DependentField11F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11 +] { + def apply( + fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) => B + ): ReaderBuilder[A] } -sealed trait DependentField15[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] - extends DependentField15F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] { - def and[T16](f16: (A) => T16): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T16, T17](f16: (A) => T16, f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T16, T17, T18](f16: (A) => T16, f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T16, T17, T18, T19](f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T16, T17, T18, T19, T20](f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T16, T17, T18, T19, T20, T21](f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T16, T17, T18, T19, T20, T21, T22](f16: (A) => T16, f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField11[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11 +] extends DependentField11F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11 + ] { + def and[T12]( + f12: (A) => T12 + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T12, T13](f12: (A) => T12, f13: (A) => T13): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T12, T13, T14]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14 + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T12, T13, T14, T15]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T12, T13, T14, T15, T16]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T12, T13, T14, T15, T16, T17]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T12, T13, T14, T15, T16, T17, T18]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f12: (A) => T12, + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] - def and[T16](f16: ReaderField[T16]): DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - def and[T16, T17](f16: ReaderField[T16], f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T16, T17, T18](f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T16, T17, T18, T19](f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T16, T17, T18, T19, T20](f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T16, T17, T18, T19, T20, T21](f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T16, T17, T18, T19, T20, T21, T22](f16: ReaderField[T16], f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T12]( + f12: ReaderField[T12] + ): DependentField12F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] + def and[T12, T13]( + f12: ReaderField[T12], + f13: ReaderField[T13] + ): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T12, T13, T14]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T12, T13, T14, T15]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T12, T13, T14, T15, T16]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T12, T13, T14, T15, T16, T17]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T12, T13, T14, T15, T16, T17, T18]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f12: ReaderField[T12], + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - -sealed trait DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) => B): ReaderBuilder[A] +sealed trait DependentField12F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12 +] { + def apply( + fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) => B + ): ReaderBuilder[A] } -sealed trait DependentField16[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] - extends DependentField16F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] { - def and[T17](f17: (A) => T17): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T17, T18](f17: (A) => T17, f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T17, T18, T19](f17: (A) => T17, f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T17, T18, T19, T20](f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T17, T18, T19, T20, T21](f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T17, T18, T19, T20, T21, T22](f17: (A) => T17, f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField12[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12 +] extends DependentField12F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12 + ] { + def and[T13](f13: (A) => T13): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T13, T14](f13: (A) => T13, f14: (A) => T14): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T13, T14, T15]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15 + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T13, T14, T15, T16]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T13, T14, T15, T16, T17]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T13, T14, T15, T16, T17, T18]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T13, T14, T15, T16, T17, T18, T19]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f13: (A) => T13, + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] - def and[T17](f17: ReaderField[T17]): DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - def and[T17, T18](f17: ReaderField[T17], f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T17, T18, T19](f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T17, T18, T19, T20](f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T17, T18, T19, T20, T21](f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T17, T18, T19, T20, T21, T22](f17: ReaderField[T17], f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T13](f13: ReaderField[T13]): DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] + def and[T13, T14]( + f13: ReaderField[T13], + f14: ReaderField[T14] + ): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T13, T14, T15]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T13, T14, T15, T16]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T13, T14, T15, T16, T17]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T13, T14, T15, T16, T17, T18]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T13, T14, T15, T16, T17, T18, T19]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20, T21]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f13: ReaderField[T13], + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - -sealed trait DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) => B): ReaderBuilder[A] +sealed trait DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 +] { + def apply( + fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) => B + ): ReaderBuilder[A] } -sealed trait DependentField17[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] - extends DependentField17F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] { - def and[T18](f18: (A) => T18): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T18, T19](f18: (A) => T18, f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T18, T19, T20](f18: (A) => T18, f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T18, T19, T20, T21](f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T18, T19, T20, T21, T22](f18: (A) => T18, f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField13[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 +] extends DependentField13F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13 + ] { + def and[T14](f14: (A) => T14): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T14, T15](f14: (A) => T14, f15: (A) => T15): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T14, T15, T16]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16 + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T14, T15, T16, T17]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T14, T15, T16, T17, T18]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T14, T15, T16, T17, T18, T19]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T14, T15, T16, T17, T18, T19, T20]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T14, T15, T16, T17, T18, T19, T20, T21]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f14: (A) => T14, + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] - def and[T18](f18: ReaderField[T18]): DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - def and[T18, T19](f18: ReaderField[T18], f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T18, T19, T20](f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T18, T19, T20, T21](f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T18, T19, T20, T21, T22](f18: ReaderField[T18], f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] + def and[T14](f14: ReaderField[T14]): DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] + def and[T14, T15]( + f14: ReaderField[T14], + f15: ReaderField[T15] + ): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T14, T15, T16]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T14, T15, T16, T17]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T14, T15, T16, T17, T18]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T14, T15, T16, T17, T18, T19]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T14, T15, T16, T17, T18, T19, T20]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T14, T15, T16, T17, T18, T19, T20, T21]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T14, T15, T16, T17, T18, T19, T20, T21, T22]( + f14: ReaderField[T14], + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } - -sealed trait DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) => B): ReaderBuilder[A] +sealed trait DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 +] { + def apply( + fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) => B + ): ReaderBuilder[A] } -sealed trait DependentField18[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] - extends DependentField18F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] { - def and[T19](f19: (A) => T19): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T19, T20](f19: (A) => T19, f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T19, T20, T21](f19: (A) => T19, f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T19, T20, T21, T22](f19: (A) => T19, f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField14[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 +] extends DependentField14F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14 + ] { + def and[T15](f15: (A) => T15): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T15, T16](f15: (A) => T15, f16: (A) => T16): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T15, T16, T17]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17 + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T15, T16, T17, T18]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T15, T16, T17, T18, T19]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T15, T16, T17, T18, T19, T20]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T15, T16, T17, T18, T19, T20, T21]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T15, T16, T17, T18, T19, T20, T21, T22]( + f15: (A) => T15, + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + + def and[T15](f15: ReaderField[T15]): DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] + def and[T15, T16]( + f15: ReaderField[T15], + f16: ReaderField[T16] + ): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T15, T16, T17]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T15, T16, T17, T18]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T15, T16, T17, T18, T19]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T15, T16, T17, T18, T19, T20]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T15, T16, T17, T18, T19, T20, T21]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T15, T16, T17, T18, T19, T20, T21, T22]( + f15: ReaderField[T15], + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} - def and[T19](f19: ReaderField[T19]): DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - def and[T19, T20](f19: ReaderField[T19], f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T19, T20, T21](f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T19, T20, T21, T22](f19: ReaderField[T19], f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ) => B + ): ReaderBuilder[A] } +sealed trait DependentField15[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 +] extends DependentField15F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15 + ] { + def and[T16](f16: (A) => T16): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T16, T17](f16: (A) => T16, f17: (A) => T17): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T16, T17, T18]( + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18 + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T16, T17, T18, T19]( + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T16, T17, T18, T19, T20]( + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T16, T17, T18, T19, T20, T21]( + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T16, T17, T18, T19, T20, T21, T22]( + f16: (A) => T16, + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] -sealed trait DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) => B): ReaderBuilder[A] + def and[T16](f16: ReaderField[T16]): DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] + def and[T16, T17]( + f16: ReaderField[T16], + f17: ReaderField[T17] + ): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T16, T17, T18]( + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T16, T17, T18, T19]( + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T16, T17, T18, T19, T20]( + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T16, T17, T18, T19, T20, T21]( + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T16, T17, T18, T19, T20, T21, T22]( + f16: ReaderField[T16], + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } -sealed trait DependentField19[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] - extends DependentField19F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] { - def and[T20](f20: (A) => T20): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T20, T21](f20: (A) => T20, f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T20, T21, T22](f20: (A) => T20, f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ) => B + ): ReaderBuilder[A] +} + +sealed trait DependentField16[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 +] extends DependentField16F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16 + ] { + def and[T17](f17: (A) => T17): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T17, T18](f17: (A) => T17, f18: (A) => T18): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T17, T18, T19]( + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19 + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T17, T18, T19, T20]( + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T17, T18, T19, T20, T21]( + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T17, T18, T19, T20, T21, T22]( + f17: (A) => T17, + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + + def and[T17](f17: ReaderField[T17]): DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] + def and[T17, T18]( + f17: ReaderField[T17], + f18: ReaderField[T18] + ): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T17, T18, T19]( + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T17, T18, T19, T20]( + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T17, T18, T19, T20, T21]( + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T17, T18, T19, T20, T21, T22]( + f17: ReaderField[T17], + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} - def and[T20](f20: ReaderField[T20]): DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - def and[T20, T21](f20: ReaderField[T20], f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T20, T21, T22](f20: ReaderField[T20], f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ) => B + ): ReaderBuilder[A] } +sealed trait DependentField17[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 +] extends DependentField17F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17 + ] { + def and[T18](f18: (A) => T18): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T18, T19](f18: (A) => T18, f19: (A) => T19): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T18, T19, T20]( + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20 + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T18, T19, T20, T21]( + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T18, T19, T20, T21, T22]( + f18: (A) => T18, + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] -sealed trait DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) => B): ReaderBuilder[A] + def and[T18](f18: ReaderField[T18]): DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] + def and[T18, T19]( + f18: ReaderField[T18], + f19: ReaderField[T19] + ): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T18, T19, T20]( + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T18, T19, T20, T21]( + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T18, T19, T20, T21, T22]( + f18: ReaderField[T18], + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } -sealed trait DependentField20[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] - extends DependentField20F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] { - def and[T21](f21: (A) => T21): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T21, T22](f21: (A) => T21, f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ) => B + ): ReaderBuilder[A] +} + +sealed trait DependentField18[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 +] extends DependentField18F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18 + ] { + def and[T19](f19: (A) => T19): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T19, T20](f19: (A) => T19, f20: (A) => T20): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T19, T20, T21]( + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21 + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T19, T20, T21, T22]( + f19: (A) => T19, + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + + def and[T19](f19: ReaderField[T19]): DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] + def and[T19, T20]( + f19: ReaderField[T19], + f20: ReaderField[T20] + ): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T19, T20, T21]( + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T19, T20, T21, T22]( + f19: ReaderField[T19], + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} - def and[T21](f21: ReaderField[T21]): DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - def and[T21, T22](f21: ReaderField[T21], f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ) => B + ): ReaderBuilder[A] } +sealed trait DependentField19[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 +] extends DependentField19F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19 + ] { + def and[T20](f20: (A) => T20): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T20, T21](f20: (A) => T20, f21: (A) => T21): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T20, T21, T22]( + f20: (A) => T20, + f21: (A) => T21, + f22: (A) => T22 + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] -sealed trait DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) => B): ReaderBuilder[A] + def and[T20](f20: ReaderField[T20]): DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] + def and[T20, T21]( + f20: ReaderField[T20], + f21: ReaderField[T21] + ): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T20, T21, T22]( + f20: ReaderField[T20], + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } -sealed trait DependentField21[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] - extends DependentField21F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] { - def and[T22](f22: (A) => T22): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ) => B + ): ReaderBuilder[A] +} + +sealed trait DependentField20[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 +] extends DependentField20F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20 + ] { + def and[T21](f21: (A) => T21): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T21, T22](f21: (A) => T21, f22: (A) => T22): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] + + def and[T21](f21: ReaderField[T21]): DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] + def and[T21, T22]( + f21: ReaderField[T21], + f22: ReaderField[T22] + ): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] +} - def and[T22](f22: ReaderField[T22]): DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] +sealed trait DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ) => B + ): ReaderBuilder[A] } +sealed trait DependentField21[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 +] extends DependentField21F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21 + ] { + def and[T22](f22: (A) => T22): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] -sealed trait DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] { - def apply(fun: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) => B): ReaderBuilder[A] + def and[T22](f22: ReaderField[T22]): DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] } -sealed trait DependentField22[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] - extends DependentField22F[A, B, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] { +sealed trait DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 +] { + def apply( + fun: ( + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ) => B + ): ReaderBuilder[A] } +sealed trait DependentField22[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 +] extends DependentField22F[ + A, + B, + T1, + T2, + T3, + T4, + T5, + T6, + T7, + T8, + T9, + T10, + T11, + T12, + T13, + T14, + T15, + T16, + T17, + T18, + T19, + T20, + T21, + T22 + ] {} diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/FieldStyle.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/FieldStyle.scala index 521a2a54..9f3e80e0 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/FieldStyle.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/FieldStyle.scala @@ -4,25 +4,27 @@ import java.util.regex.Pattern import scala.annotation.StaticAnnotation -trait FieldStyle { self => +trait FieldStyle { self => def applyStyle(field: String): String - def andThen(that: FieldStyle): FieldStyle = field => that.applyStyle(self.applyStyle(field)) + def andThen(that: FieldStyle): FieldStyle = field => + that.applyStyle(self.applyStyle(field)) - def andThen(that: String => String): FieldStyle = field => that.apply(self.applyStyle(field)) + def andThen(that: String => String): FieldStyle = field => + that.apply(self.applyStyle(field)) def >>(that: FieldStyle): FieldStyle = andThen(that) def >>(that: String => String): FieldStyle = andThen(that) } - object FieldStyle { def apply(fun: String => String): FieldStyle = fun(_) class Ref(fieldStyle: FieldStyle) extends StaticAnnotation trait StyleReference extends FieldStyle { - final override def applyStyle(field: String): String = throw new RuntimeException("StyleReference should not be used at runtime") + final override def applyStyle(field: String): String = + throw new RuntimeException("StyleReference should not be used at runtime") } // Names transformations adopted from scala enumeratum diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/NotDescribedException.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/NotDescribedException.scala index e18f8bd2..ff8c3ad7 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/NotDescribedException.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/NotDescribedException.scala @@ -1,3 +1,4 @@ package tethys.derivation.builder -class NotDescribedException extends Exception("Definition should be in describe block", null) \ No newline at end of file +class NotDescribedException + extends Exception("Definition should be in describe block", null) diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderDescription.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderDescription.scala index a98e529c..810d8e26 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderDescription.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderDescription.scala @@ -1,8 +1,11 @@ package tethys.derivation.builder -case class ReaderDerivationConfig(fieldStyle: Option[FieldStyle], - isStrict: Boolean) { - def withFieldStyle(fieldStyle: FieldStyle): ReaderDerivationConfig = this.copy(fieldStyle = Some(fieldStyle)) +case class ReaderDerivationConfig( + fieldStyle: Option[FieldStyle], + isStrict: Boolean +) { + def withFieldStyle(fieldStyle: FieldStyle): ReaderDerivationConfig = + this.copy(fieldStyle = Some(fieldStyle)) def strict: ReaderDerivationConfig = this.copy(isStrict = true) } @@ -11,11 +14,15 @@ object ReaderDerivationConfig { fieldStyle = None, isStrict = false ) - def withFieldStyle(fieldStyle: FieldStyle): ReaderDerivationConfig = empty.withFieldStyle(fieldStyle) + def withFieldStyle(fieldStyle: FieldStyle): ReaderDerivationConfig = + empty.withFieldStyle(fieldStyle) def strict: ReaderDerivationConfig = empty.strict } -case class ReaderDescription[A](config: ReaderDerivationConfig, operations: Seq[ReaderDescription.BuilderOperation]) +case class ReaderDescription[A]( + config: ReaderDerivationConfig, + operations: Seq[ReaderDescription.BuilderOperation] +) object ReaderDescription { sealed trait Field[A] @@ -24,12 +31,20 @@ object ReaderDescription { final case class RawField[A](name: String) extends Field[A] } - sealed trait BuilderOperation object BuilderOperation { - final case class ExtractFieldAs[B, C](field: String, fun: B => C) extends BuilderOperation - final case class ExtractFieldValue(field: String, from: Seq[Field[_]], fun: Any) extends BuilderOperation - final case class ExtractFieldReader(field: String, from: Seq[Field[_]], fun: Any) extends BuilderOperation + final case class ExtractFieldAs[B, C](field: String, fun: B => C) + extends BuilderOperation + final case class ExtractFieldValue( + field: String, + from: Seq[Field[_]], + fun: Any + ) extends BuilderOperation + final case class ExtractFieldReader( + field: String, + from: Seq[Field[_]], + fun: Any + ) extends BuilderOperation } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderField.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderField.scala index f37849d7..2db03095 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderField.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/ReaderField.scala @@ -3,4 +3,4 @@ package tethys.derivation.builder import scala.annotation.compileTimeOnly import scala.language.implicitConversions -sealed trait ReaderField[A] \ No newline at end of file +sealed trait ReaderField[A] diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterBuilder.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterBuilder.scala index 23ced87a..d50e8596 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterBuilder.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterBuilder.scala @@ -4,9 +4,7 @@ import tethys.derivation.builder.WriterBuilder._ import scala.annotation.compileTimeOnly - -/** - * Created by eld0727 on 22.04.17. +/** Created by eld0727 on 22.04.17. */ sealed trait WriterBuilder[A] { @@ -16,7 +14,9 @@ sealed trait WriterBuilder[A] { def update[B](field: A => B): FunApply[A, B] with WithRename[FunApply[A, B]] - def updatePartial[B](field: A => B): PartialFunApply[A, B] with WithRename[PartialFunApply[A, B]] + def updatePartial[B]( + field: A => B + ): PartialFunApply[A, B] with WithRename[PartialFunApply[A, B]] def add(name: String): FunApply[A, A] @@ -25,7 +25,9 @@ sealed trait WriterBuilder[A] { object WriterBuilder { - @compileTimeOnly("WriterBuilder should be defined in describe, jsonWriter of jsonReader macro") + @compileTimeOnly( + "WriterBuilder should be defined in describe, jsonWriter of jsonReader macro" + ) def apply[A <: Product]: WriterBuilder[A] = throw new NotDescribedException sealed trait WithRename[Res] { @@ -42,6 +44,3 @@ object WriterBuilder { def fromRoot[C](partial: PartialFunction[A, C]): WriterBuilder[A] } } - - - diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterDescription.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterDescription.scala index 2452de89..e0578eee 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterDescription.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/builder/WriterDescription.scala @@ -2,27 +2,49 @@ package tethys.derivation.builder import tethys.derivation.builder.WriterDescription.BuilderOperation -case class WriterDerivationConfig(fieldStyle: Option[FieldStyle], discriminator: Option[String] = None) { - def withFieldStyle(fieldStyle: FieldStyle): WriterDerivationConfig = this.copy(fieldStyle = Some(fieldStyle)) - def withDiscriminator(discriminator: String): WriterDerivationConfig = this.copy(discriminator = Some(discriminator)) +case class WriterDerivationConfig( + fieldStyle: Option[FieldStyle], + discriminator: Option[String] = None +) { + def withFieldStyle(fieldStyle: FieldStyle): WriterDerivationConfig = + this.copy(fieldStyle = Some(fieldStyle)) + def withDiscriminator(discriminator: String): WriterDerivationConfig = + this.copy(discriminator = Some(discriminator)) } object WriterDerivationConfig { def empty: WriterDerivationConfig = WriterDerivationConfig(None) - def withFieldStyle(fieldStyle: FieldStyle): WriterDerivationConfig = empty.copy(fieldStyle = Some(fieldStyle)) + def withFieldStyle(fieldStyle: FieldStyle): WriterDerivationConfig = + empty.copy(fieldStyle = Some(fieldStyle)) } -case class WriterDescription[A](config: WriterDerivationConfig, operations: Seq[BuilderOperation[A]]) +case class WriterDescription[A]( + config: WriterDerivationConfig, + operations: Seq[BuilderOperation[A]] +) object WriterDescription { trait BuilderOperation[A] object BuilderOperation { case class Remove[A](field: String) extends BuilderOperation[A] - case class Update[A, B, C](field: String, name: Option[String], fun: B => C) extends BuilderOperation[A] - case class UpdateFromRoot[A, C](field: String, name: Option[String], fun: A => C) extends BuilderOperation[A] - case class UpdatePartial[A, B](field: String, name: Option[String], fun: PartialFunction[B, Any]) extends BuilderOperation[A] - case class UpdatePartialFromRoot[A](field: String, name: Option[String], fun: PartialFunction[A, Any]) extends BuilderOperation[A] + case class Update[A, B, C](field: String, name: Option[String], fun: B => C) + extends BuilderOperation[A] + case class UpdateFromRoot[A, C]( + field: String, + name: Option[String], + fun: A => C + ) extends BuilderOperation[A] + case class UpdatePartial[A, B]( + field: String, + name: Option[String], + fun: PartialFunction[B, Any] + ) extends BuilderOperation[A] + case class UpdatePartialFromRoot[A]( + field: String, + name: Option[String], + fun: PartialFunction[A, Any] + ) extends BuilderOperation[A] case class Add[A, B](field: String, fun: A => B) extends BuilderOperation[A] } -} \ No newline at end of file +} diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/BaseMacroDefinitions.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/BaseMacroDefinitions.scala index ed32cea8..7f9bf02a 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/BaseMacroDefinitions.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/BaseMacroDefinitions.scala @@ -2,8 +2,7 @@ package tethys.derivation.impl import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 22.04.17. +/** Created by eld0727 on 22.04.17. */ trait BaseMacroDefinitions { val c: blackbox.Context diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/CaseClassUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/CaseClassUtils.scala index 8ba5ae8f..d1cac757 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/CaseClassUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/CaseClassUtils.scala @@ -2,8 +2,7 @@ package tethys.derivation.impl import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 23.04.17. +/** Created by eld0727 on 23.04.17. */ trait CaseClassUtils extends LoggingUtils { val c: blackbox.Context @@ -12,13 +11,16 @@ trait CaseClassUtils extends LoggingUtils { case class CaseClassDefinition(tpe: Type, fields: List[CaseClassField]) case class CaseClassField(name: String, tpe: Type, defaultValue: Option[Tree]) - def caseClassDefinition[A: WeakTypeTag]: CaseClassDefinition = caseClassDefinition(weakTypeOf[A]) + def caseClassDefinition[A: WeakTypeTag]: CaseClassDefinition = + caseClassDefinition(weakTypeOf[A]) def caseClassDefinition(tpe: Type): CaseClassDefinition = { val ctor = getConstructor(tpe) CaseClassDefinition( tpe = tpe, - fields = ctor.paramLists.head.zipWithIndex.map{ case (sym, idx) => constructorParameterToCaseClassField(tpe)(idx, sym) } + fields = ctor.paramLists.head.zipWithIndex.map { case (sym, idx) => + constructorParameterToCaseClassField(tpe)(idx, sym) + } ) } @@ -26,20 +28,26 @@ trait CaseClassUtils extends LoggingUtils { def isCaseClass(tpe: Type): Boolean = { tpe.typeSymbol.isClass && - (tpe.typeSymbol.asClass.isCaseClass || - tpe.member(TermName("copy")).isMethod && - tpe <:< weakTypeOf[Product]) + (tpe.typeSymbol.asClass.isCaseClass || + tpe.member(TermName("copy")).isMethod && + tpe <:< weakTypeOf[Product]) } private def getConstructor(tpe: Type): MethodSymbol = { - tpe.decls.collectFirst { - case s: MethodSymbol if s.isPrimaryConstructor => s - }.getOrElse { - abort(s"Type '${tpe.typeSymbol.name.decodedName.toString} doesn't have main constructor") - } + tpe.decls + .collectFirst { + case s: MethodSymbol if s.isPrimaryConstructor => s + } + .getOrElse { + abort( + s"Type '${tpe.typeSymbol.name.decodedName.toString} doesn't have main constructor" + ) + } } - private def constructorParameterToCaseClassField(tpe: Type)(idx: Int, param: Symbol): CaseClassField = { + private def constructorParameterToCaseClassField( + tpe: Type + )(idx: Int, param: Symbol): CaseClassField = { val possibleRealType = tpe.decls.collectFirst { case s if s.name == param.name => s.typeSignatureIn(tpe).finalResultType } @@ -47,13 +55,12 @@ trait CaseClassUtils extends LoggingUtils { CaseClassField( name = param.name.decodedName.toString, tpe = possibleRealType.getOrElse(param.typeSignatureIn(tpe)), - defaultValue = - if (param.asTerm.isParamWithDefault) { - val methodName = TermName(s"apply$$default$$${idx + 1}") - val select = q"${tpe.companion.typeSymbol.asClass.module}.$methodName" - Some(select) - } else - None + defaultValue = if (param.asTerm.isParamWithDefault) { + val methodName = TermName(s"apply$$default$$${idx + 1}") + val select = q"${tpe.companion.typeSymbol.asClass.module}.$methodName" + Some(select) + } else + None ) } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/LoggingUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/LoggingUtils.scala index 27fc9a51..c9793b79 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/LoggingUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/LoggingUtils.scala @@ -2,13 +2,13 @@ package tethys.derivation.impl import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 23.04.17. +/** Created by eld0727 on 23.04.17. */ trait LoggingUtils { val c: blackbox.Context - def info(msg: => String, force: Boolean = false): Unit = c.info(c.enclosingPosition, msg, force) + def info(msg: => String, force: Boolean = false): Unit = + c.info(c.enclosingPosition, msg, force) def warn(msg: String): Unit = c.warning(c.enclosingPosition, msg) def error(msg: String): Unit = c.error(c.enclosingPosition, msg) def abort(msg: String): Nothing = c.abort(c.enclosingPosition, msg) diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/MacroUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/MacroUtils.scala index 72a9d809..6eac1564 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/MacroUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/MacroUtils.scala @@ -2,10 +2,10 @@ package tethys.derivation.impl import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 22.04.17. +/** Created by eld0727 on 22.04.17. */ -trait MacroUtils extends BaseMacroDefinitions +trait MacroUtils + extends BaseMacroDefinitions with CaseClassUtils with LoggingUtils { val c: blackbox.Context @@ -17,38 +17,41 @@ trait MacroUtils extends BaseMacroDefinitions case class SelectChain(chain: Seq[String]) - implicit lazy val selectChainUnliftable: Unliftable[SelectChain] = Unliftable[SelectChain] { - case Ident(name) => SelectChain(Seq(name.decodedName.toString)) - case select: Select => - def selectAllNames(s: Tree): Seq[String] = s match { - case Select(rest, name) => selectAllNames(rest) :+ name.decodedName.toString - case Ident(name) => Seq(name.decodedName.toString) - } - - SelectChain(selectAllNames(select)) - } - + implicit lazy val selectChainUnliftable: Unliftable[SelectChain] = + Unliftable[SelectChain] { + case Ident(name) => SelectChain(Seq(name.decodedName.toString)) + case select: Select => + def selectAllNames(s: Tree): Seq[String] = s match { + case Select(rest, name) => + selectAllNames(rest) :+ name.decodedName.toString + case Ident(name) => Seq(name.decodedName.toString) + } + + SelectChain(selectAllNames(select)) + } case class BuilderField(name: String, tpe: Type) - implicit lazy val builderFieldUnliftable: Unliftable[BuilderField] = Unliftable[BuilderField] { - case lambda@q"((${ValDef(_, name, _, _)}) => ${b: SelectChain})" - if b.chain.size == 2 && name.decodedName.toString == b.chain.head => - val tpe = lambda match { - case q"($_ => ${body: Tree})" => body.tpe - } - BuilderField(b.chain(1), tpe) - } + implicit lazy val builderFieldUnliftable: Unliftable[BuilderField] = + Unliftable[BuilderField] { + case lambda @ q"((${ValDef(_, name, _, _)}) => ${b: SelectChain})" + if b.chain.size == 2 && name.decodedName.toString == b.chain.head => + val tpe = lambda match { + case q"($_ => ${body: Tree})" => body.tpe + } + BuilderField(b.chain(1), tpe) + } object Untyped { def unapply(arg: Tree): Option[Tree] = arg match { case Typed(t, _) => Untyped.unapply(t) - case _ => Some(arg) + case _ => Some(arg) } } - implicit lazy val optionTreeUnliftable: Unliftable[Option[Tree]] = Unliftable[Option[Tree]] { - case q"$col.Some.apply[$_](${res: Tree})" => Some(res) - case q"$col.None" => None - } + implicit lazy val optionTreeUnliftable: Unliftable[Option[Tree]] = + Unliftable[Option[Tree]] { + case q"$col.Some.apply[$_](${res: Tree})" => Some(res) + case q"$col.None" => None + } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderBuilderUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderBuilderUtils.scala index c90461de..552c4ff0 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderBuilderUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderBuilderUtils.scala @@ -9,7 +9,10 @@ trait ReaderBuilderUtils extends MacroUtils { val c: blackbox.Context import c.universe._ - case class ReaderMacroDescription(config: c.Expr[ReaderDerivationConfig], operations: Seq[ReaderMacroOperation]) + case class ReaderMacroDescription( + config: c.Expr[ReaderDerivationConfig], + operations: Seq[ReaderMacroOperation] + ) sealed trait Field { def name: String @@ -24,19 +27,38 @@ trait ReaderBuilderUtils extends MacroUtils { def field: String } object ReaderMacroOperation { - final case class ExtractFieldAs(field: String, tpe: Type, as: Type, fun: Tree) extends ReaderMacroOperation - final case class ExtractFieldValue(field: String, from: Seq[Field], fun: Tree) extends ReaderMacroOperation - final case class ExtractFieldReader(field: String, from: Seq[Field], fun: Tree) extends ReaderMacroOperation + final case class ExtractFieldAs( + field: String, + tpe: Type, + as: Type, + fun: Tree + ) extends ReaderMacroOperation + final case class ExtractFieldValue( + field: String, + from: Seq[Field], + fun: Tree + ) extends ReaderMacroOperation + final case class ExtractFieldReader( + field: String, + from: Seq[Field], + fun: Tree + ) extends ReaderMacroOperation } - implicit lazy val readerMacroDescriptionLiftable: Liftable[ReaderMacroDescription] = Liftable[ReaderMacroDescription] { + implicit lazy val readerMacroDescriptionLiftable + : Liftable[ReaderMacroDescription] = Liftable[ReaderMacroDescription] { case ReaderMacroDescription(config, operations) => q"$buildersPack.ReaderDescription(${config.tree} ,_root_.scala.Seq(..$operations))" } - implicit lazy val readerMacroDescriptionUnliftable: Unliftable[ReaderMacroDescription] = Unliftable[ReaderMacroDescription] { + implicit lazy val readerMacroDescriptionUnliftable: Unliftable[ + ReaderMacroDescription + ] = Unliftable[ReaderMacroDescription] { case q"$_.ReaderDescription.apply[$_](${config: Tree} ,$_.Seq.apply[$_](..${operations: Seq[ReaderMacroOperation]}))" => - ReaderMacroDescription(c.Expr[ReaderDerivationConfig](c.untypecheck(config)), operations) + ReaderMacroDescription( + c.Expr[ReaderDerivationConfig](c.untypecheck(config)), + operations + ) } implicit lazy val fieldLiftable: Liftable[Field] = Liftable[Field] { @@ -64,7 +86,8 @@ trait ReaderBuilderUtils extends MacroUtils { Field.RawField(name, tpe.tpe) } - implicit lazy val readerMacroOperationLiftable: Liftable[ReaderMacroOperation] = Liftable[ReaderMacroOperation] { + implicit lazy val readerMacroOperationLiftable + : Liftable[ReaderMacroOperation] = Liftable[ReaderMacroOperation] { case ReaderMacroOperation.ExtractFieldAs(field, tpe, as, fun) => q"$buildersPack.ReaderDescription.BuilderOperation.ExtractFieldAs[$as, $tpe]($field, $fun)" @@ -75,8 +98,8 @@ trait ReaderBuilderUtils extends MacroUtils { q"$buildersPack.ReaderDescription.BuilderOperation.ExtractFieldReader($field, _root_.scala.Seq(..$from), $fun)" } - - implicit lazy val readerMacroOperationUnliftable: Unliftable[ReaderMacroOperation] = Unliftable[ReaderMacroOperation] { + implicit lazy val readerMacroOperationUnliftable + : Unliftable[ReaderMacroOperation] = Unliftable[ReaderMacroOperation] { case q"$_.ReaderDescription.BuilderOperation.ExtractFieldAs.apply[${as: Tree}, ${tpe: Tree}](${field: String}, ${fun: Tree})" => ReaderMacroOperation.ExtractFieldAs(field, tpe.tpe, as.tpe, fun) diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionCommons.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionCommons.scala index 66160a5c..7cb36469 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionCommons.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionCommons.scala @@ -1,6 +1,10 @@ package tethys.derivation.impl.builder -import tethys.derivation.builder.{ReaderBuilder, ReaderDerivationConfig, ReaderDescription} +import tethys.derivation.builder.{ + ReaderBuilder, + ReaderDerivationConfig, + ReaderDescription +} import scala.reflect.macros.blackbox @@ -8,7 +12,9 @@ trait ReaderDescriptionCommons extends ReaderBuilderUtils { val c: blackbox.Context import c.universe._ - def convertReaderBuilder[A: WeakTypeTag](builder: Expr[ReaderBuilder[A]]): Expr[ReaderDescription[A]] = { + def convertReaderBuilder[A: WeakTypeTag]( + builder: Expr[ReaderBuilder[A]] + ): Expr[ReaderDescription[A]] = { val description = extractDescription(builder.tree) c.Expr[ReaderDescription[A]] { @@ -18,67 +24,100 @@ trait ReaderDescriptionCommons extends ReaderBuilderUtils { } } - protected lazy val emptyReaderConfig: Expr[ReaderDerivationConfig] = c.Expr[ReaderDerivationConfig](c.untypecheck( - q"tethys.derivation.builder.ReaderDerivationConfig.empty" - )) - - private def extractDescription(tree: Tree): ReaderMacroDescription = tree match { - // ===== ROOT ===== - case q"ReaderBuilder.apply[$_]" => - ReaderMacroDescription(emptyReaderConfig, Seq()) - - case q"$_.ReaderBuilder.apply[$_]" => - ReaderMacroDescription(emptyReaderConfig, Seq()) - - // ===== FieldAs ===== - case q"${rest: Tree}.extract[${tpe: Tree}](${f: BuilderField}).as[${as: Tree}].apply(${fun: Tree})" => - val description = extractDescription(rest) - description.copy(operations = description.operations :+ ReaderMacroOperation.ExtractFieldAs( - f.name, tpe.tpe, as.tpe, fun - )) - - // ===== FieldValue ===== - case q"${rest: Tree}.extract[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).apply(${fun: Tree})" => - val description = extractDescription(rest) - description.copy(operations = description.operations :+ ReaderMacroOperation.ExtractFieldValue( - f.name, fs, fun - )) - - case q"${rest: Tree}.extract[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).and[..$_](..${ands: Seq[Field]}).apply(${fun: Tree})" => - val description = extractDescription(rest) - description.copy(operations = description.operations :+ ReaderMacroOperation.ExtractFieldValue( - f.name, fs ++ ands, fun - )) - - // ===== FieldReader ===== - case q"${rest: Tree}.extractReader[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).apply(${fun: Tree})" => - val description = extractDescription(rest) - description.copy(operations = description.operations :+ ReaderMacroOperation.ExtractFieldReader( - f.name, fs, fun - )) - - case q"${rest: Tree}.extractReader[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).and[..$_](..${ands: Seq[Field]}).apply(${fun: Tree})" => - val description = extractDescription(rest) - description.copy(operations = description.operations :+ ReaderMacroOperation.ExtractFieldReader( - f.name, fs ++ ands, fun - )) - - // ===== FieldStyle ===== - case q"${rest: Tree}.fieldStyle(${style: Tree})" => - val description = extractDescription(rest) - description.copy(config = c.Expr[ReaderDerivationConfig]( - q"${description.config.tree}.withFieldStyle($style)" - )) - - // ===== isStrict ===== - case q"${rest: Tree}.strict" => - val description = extractDescription(rest) - description.copy(config = c.Expr[ReaderDerivationConfig]( - q"${description.config.tree}.strict" - )) - - // ===== NOPE ===== - case _ => - abort(s"Unknown builder tree: $tree") - } + protected lazy val emptyReaderConfig: Expr[ReaderDerivationConfig] = + c.Expr[ReaderDerivationConfig]( + c.untypecheck( + q"tethys.derivation.builder.ReaderDerivationConfig.empty" + ) + ) + + private def extractDescription(tree: Tree): ReaderMacroDescription = + tree match { + // ===== ROOT ===== + case q"ReaderBuilder.apply[$_]" => + ReaderMacroDescription(emptyReaderConfig, Seq()) + + case q"$_.ReaderBuilder.apply[$_]" => + ReaderMacroDescription(emptyReaderConfig, Seq()) + + // ===== FieldAs ===== + case q"${rest: Tree}.extract[${tpe: Tree}](${f: BuilderField}).as[${as: Tree}].apply(${fun: Tree})" => + val description = extractDescription(rest) + description.copy(operations = + description.operations :+ ReaderMacroOperation.ExtractFieldAs( + f.name, + tpe.tpe, + as.tpe, + fun + ) + ) + + // ===== FieldValue ===== + case q"${rest: Tree}.extract[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).apply(${fun: Tree})" => + val description = extractDescription(rest) + description.copy(operations = + description.operations :+ ReaderMacroOperation.ExtractFieldValue( + f.name, + fs, + fun + ) + ) + + case q"${rest: Tree}.extract[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[ + Field + ]}).and[..$_](..${ands: Seq[Field]}).apply(${fun: Tree})" => + val description = extractDescription(rest) + description.copy(operations = + description.operations :+ ReaderMacroOperation.ExtractFieldValue( + f.name, + fs ++ ands, + fun + ) + ) + + // ===== FieldReader ===== + case q"${rest: Tree}.extractReader[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[Field]}).apply(${fun: Tree})" => + val description = extractDescription(rest) + description.copy(operations = + description.operations :+ ReaderMacroOperation.ExtractFieldReader( + f.name, + fs, + fun + ) + ) + + case q"${rest: Tree}.extractReader[$tpe](${f: BuilderField}).from[..$_](..${fs: Seq[ + Field + ]}).and[..$_](..${ands: Seq[Field]}).apply(${fun: Tree})" => + val description = extractDescription(rest) + description.copy(operations = + description.operations :+ ReaderMacroOperation.ExtractFieldReader( + f.name, + fs ++ ands, + fun + ) + ) + + // ===== FieldStyle ===== + case q"${rest: Tree}.fieldStyle(${style: Tree})" => + val description = extractDescription(rest) + description.copy(config = + c.Expr[ReaderDerivationConfig]( + q"${description.config.tree}.withFieldStyle($style)" + ) + ) + + // ===== isStrict ===== + case q"${rest: Tree}.strict" => + val description = extractDescription(rest) + description.copy(config = + c.Expr[ReaderDerivationConfig]( + q"${description.config.tree}.strict" + ) + ) + + // ===== NOPE ===== + case _ => + abort(s"Unknown builder tree: $tree") + } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionMacro.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionMacro.scala index ad20b634..8332aa06 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionMacro.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/ReaderDescriptionMacro.scala @@ -4,10 +4,13 @@ import tethys.derivation.builder.{ReaderBuilder, ReaderDescription} import scala.reflect.macros.blackbox -class ReaderDescriptionMacro(val c: blackbox.Context) extends ReaderDescriptionCommons { +class ReaderDescriptionMacro(val c: blackbox.Context) + extends ReaderDescriptionCommons { import c.universe._ - def readerDescription[A: WeakTypeTag](builder: Expr[ReaderBuilder[A]]): Expr[ReaderDescription[A]] = { + def readerDescription[A: WeakTypeTag]( + builder: Expr[ReaderBuilder[A]] + ): Expr[ReaderDescription[A]] = { convertReaderBuilder[A](builder) } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriteBuilderUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriteBuilderUtils.scala index fab282d4..f2f8ddb1 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriteBuilderUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriteBuilderUtils.scala @@ -5,74 +5,138 @@ import tethys.derivation.impl.MacroUtils import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 24.04.17. +/** Created by eld0727 on 24.04.17. */ trait WriteBuilderUtils extends MacroUtils { val c: blackbox.Context import c.universe._ - case class MacroWriteDescription(tpe: Type, config: c.Expr[WriterDerivationConfig], operations: Seq[BuilderMacroOperation]) + case class MacroWriteDescription( + tpe: Type, + config: c.Expr[WriterDerivationConfig], + operations: Seq[BuilderMacroOperation] + ) - implicit lazy val macroWriteDescriptionLiftable: Liftable[MacroWriteDescription] = { + implicit lazy val macroWriteDescriptionLiftable + : Liftable[MacroWriteDescription] = { Liftable[MacroWriteDescription] { case MacroWriteDescription(tpe, config, operations) => q"$buildersPack.WriterDescription[$tpe](${config.tree}, _root_.scala.Seq(..$operations))" } } - implicit lazy val macroWriteDescriptionUnliftable: Unliftable[MacroWriteDescription] = { + implicit lazy val macroWriteDescriptionUnliftable + : Unliftable[MacroWriteDescription] = { Unliftable[MacroWriteDescription] { case q"$pack.WriterDescription.apply[${tpe: Tree}](${config: Tree}, $col.Seq.apply[$_](..${operations: Seq[BuilderMacroOperation]}))" => - MacroWriteDescription(tpe.tpe, c.Expr[WriterDerivationConfig](c.untypecheck(config)), operations) + MacroWriteDescription( + tpe.tpe, + c.Expr[WriterDerivationConfig](c.untypecheck(config)), + operations + ) } } sealed trait BuilderMacroOperation object BuilderMacroOperation { case class Remove(tpe: Type, field: String) extends BuilderMacroOperation - case class Update(tpe: Type, field: String, name: Option[Expr[String]], fun: Tree, from: Type, to: Type) extends BuilderMacroOperation - case class UpdateFromRoot(tpe: Type, field: String, name: Option[Expr[String]], fun: Tree, to: Type) extends BuilderMacroOperation - case class UpdatePartial(tpe: Type, field: String, name: Option[Expr[String]], fun: Tree, from: Type) extends BuilderMacroOperation - case class UpdatePartialFromRoot(tpe: Type, field: String, name: Option[Expr[String]], fun: Tree) extends BuilderMacroOperation - case class Add(tpe: Type, field: Expr[String], fun: Tree, to: Type) extends BuilderMacroOperation + case class Update( + tpe: Type, + field: String, + name: Option[Expr[String]], + fun: Tree, + from: Type, + to: Type + ) extends BuilderMacroOperation + case class UpdateFromRoot( + tpe: Type, + field: String, + name: Option[Expr[String]], + fun: Tree, + to: Type + ) extends BuilderMacroOperation + case class UpdatePartial( + tpe: Type, + field: String, + name: Option[Expr[String]], + fun: Tree, + from: Type + ) extends BuilderMacroOperation + case class UpdatePartialFromRoot( + tpe: Type, + field: String, + name: Option[Expr[String]], + fun: Tree + ) extends BuilderMacroOperation + case class Add(tpe: Type, field: Expr[String], fun: Tree, to: Type) + extends BuilderMacroOperation } - implicit lazy val builderMacroOperationLiftable: Liftable[BuilderMacroOperation] = Liftable[BuilderMacroOperation] { + implicit lazy val builderMacroOperationLiftable + : Liftable[BuilderMacroOperation] = Liftable[BuilderMacroOperation] { case BuilderMacroOperation.Remove(tpe, field) => q"$buildersPack.WriterDescription.BuilderOperation.Remove.apply[$tpe]($field)" case BuilderMacroOperation.Update(tpe, field, name, fun, from, to) => - q"$buildersPack.WriterDescription.BuilderOperation.Update.apply[$tpe, $from, $to]($field, ${name.map(_.tree)}, $fun)" + q"$buildersPack.WriterDescription.BuilderOperation.Update.apply[$tpe, $from, $to]($field, ${name + .map(_.tree)}, $fun)" case BuilderMacroOperation.UpdateFromRoot(tpe, field, name, fun, to) => - q"$buildersPack.WriterDescription.BuilderOperation.UpdateFromRoot.apply[$tpe, $to]($field, ${name.map(_.tree)}, $fun)" + q"$buildersPack.WriterDescription.BuilderOperation.UpdateFromRoot.apply[$tpe, $to]($field, ${name + .map(_.tree)}, $fun)" case BuilderMacroOperation.UpdatePartial(tpe, field, name, fun, to) => - q"$buildersPack.WriterDescription.BuilderOperation.UpdatePartial.apply[$tpe, $to]($field, ${name.map(_.tree)}, $fun)" + q"$buildersPack.WriterDescription.BuilderOperation.UpdatePartial.apply[$tpe, $to]($field, ${name + .map(_.tree)}, $fun)" case BuilderMacroOperation.UpdatePartialFromRoot(tpe, field, name, fun) => - q"$buildersPack.WriterDescription.BuilderOperation.UpdatePartialFromRoot.apply[$tpe]($field, ${name.map(_.tree)}, $fun)" + q"$buildersPack.WriterDescription.BuilderOperation.UpdatePartialFromRoot.apply[$tpe]($field, ${name + .map(_.tree)}, $fun)" case BuilderMacroOperation.Add(tpe, field, fun, to) => q"$buildersPack.WriterDescription.BuilderOperation.Add.apply[$tpe, $to](${field.tree}, $fun)" } - implicit lazy val builderMacroOperationUnliftable: Unliftable[BuilderMacroOperation] = Unliftable[BuilderMacroOperation] { + implicit lazy val builderMacroOperationUnliftable + : Unliftable[BuilderMacroOperation] = Unliftable[BuilderMacroOperation] { case q"$pack.BuilderOperation.Remove.apply[${tpe: Tree}](${field: String})" => BuilderMacroOperation.Remove(tpe.tpe, field) case q"$pack.BuilderOperation.Update.apply[${tpe: Tree}, ${from: Tree}, ${to: Tree}](${field: String}, ${name: Option[Tree]}, ${fun: Tree})" => - BuilderMacroOperation.Update(tpe.tpe, field, name.map(c.Expr[String](_)), fun, from.tpe, to.tpe) + BuilderMacroOperation.Update( + tpe.tpe, + field, + name.map(c.Expr[String](_)), + fun, + from.tpe, + to.tpe + ) case q"$pack.BuilderOperation.UpdateFromRoot.apply[${tpe: Tree}, ${to: Tree}](${field: String}, ${name: Option[Tree]}, ${fun: Tree})" => - BuilderMacroOperation.UpdateFromRoot(tpe.tpe, field, name.map(c.Expr[String](_)), fun, to.tpe) + BuilderMacroOperation.UpdateFromRoot( + tpe.tpe, + field, + name.map(c.Expr[String](_)), + fun, + to.tpe + ) case q"$pack.BuilderOperation.UpdatePartial.apply[${tpe: Tree}, ${from: Tree}](${field: String}, ${name: Option[Tree]}, ${fun: Tree})" => - BuilderMacroOperation.UpdatePartial(tpe.tpe, field, name.map(c.Expr[String](_)), fun, from.tpe) + BuilderMacroOperation.UpdatePartial( + tpe.tpe, + field, + name.map(c.Expr[String](_)), + fun, + from.tpe + ) case q"$pack.BuilderOperation.UpdatePartialFromRoot.apply[${tpe: Tree}](${field: String}, ${name: Option[Tree]}, ${fun: Tree})" => - BuilderMacroOperation.UpdatePartialFromRoot(tpe.tpe, field, name.map(c.Expr[String](_)), fun) + BuilderMacroOperation.UpdatePartialFromRoot( + tpe.tpe, + field, + name.map(c.Expr[String](_)), + fun + ) case q"$pack.BuilderOperation.Add.apply[${tpe: Tree}, ${to: Tree}](${field: Tree}, ${fun: Tree})" => BuilderMacroOperation.Add(tpe.tpe, c.Expr(field), fun, to.tpe) diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterBuilderCommons.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterBuilderCommons.scala index 154a0f3a..e0cd7905 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterBuilderCommons.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterBuilderCommons.scala @@ -1,6 +1,10 @@ package tethys.derivation.impl.builder -import tethys.derivation.builder.{WriterBuilder, WriterDerivationConfig, WriterDescription} +import tethys.derivation.builder.{ + WriterBuilder, + WriterDerivationConfig, + WriterDescription +} import scala.reflect.macros.blackbox @@ -8,7 +12,9 @@ trait WriterBuilderCommons extends WriteBuilderUtils { val c: blackbox.Context import c.universe._ - protected def convertWriterBuilder[A: WeakTypeTag](builder: Expr[WriterBuilder[A]]): Expr[WriterDescription[A]] = { + protected def convertWriterBuilder[A: WeakTypeTag]( + builder: Expr[WriterBuilder[A]] + ): Expr[WriterDescription[A]] = { val description = extractSimpleDescription(builder.tree) checkOperations(description.operations) c.Expr[WriterDescription[A]] { @@ -18,107 +24,184 @@ trait WriterBuilderCommons extends WriteBuilderUtils { } } - protected lazy val emptyWriterConfig: Expr[WriterDerivationConfig] = c.Expr[WriterDerivationConfig](c.untypecheck( - q"tethys.derivation.builder.WriterDerivationConfig.empty" - )) - - private def extractSimpleDescription(tree: Tree): MacroWriteDescription = tree match { - // ===== ROOT ===== - case q"WriterBuilder.apply[${tpe: Tree}]" => - MacroWriteDescription(tpe.tpe, emptyWriterConfig, Seq()) - - case q"$_.WriterBuilder.apply[${tpe: Tree}]" => - MacroWriteDescription(tpe.tpe, emptyWriterConfig, Seq()) - - // ===== remove ===== - case q"${rest: Tree}.remove[${tpe: Tree}](${f: BuilderField})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.Remove(description.tpe, f.name) - ) - - // ===== rename ===== - case q"${rest: Tree}.rename[${a: Tree}](${f: BuilderField})(${rename: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.Update(description.tpe, f.name, Some(c.Expr(rename)), q"identity[${a.tpe}]", a.tpe, a.tpe) - ) - - // ===== update ===== - case q"${rest: Tree}.update[${a: Tree}](${f: BuilderField}).apply[${b: Tree}](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.Update(description.tpe, f.name, None, updater, a.tpe, b.tpe) - ) - - // ===== update with rename ===== - case q"${rest: Tree}.update[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).apply[${b: Tree}](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.Update(description.tpe, f.name, Some(c.Expr(rename)), updater, a.tpe, b.tpe) - ) - - // ===== update from root ===== - case q"${rest: Tree}.update[$_](${f: BuilderField}).fromRoot[${b: Tree}](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdateFromRoot(description.tpe, f.name, None, updater, b.tpe) - ) - - // ===== update from root with rename ===== - case q"${rest: Tree}.update[$_](${f: BuilderField}).withRename(${rename: Tree}).fromRoot[${b: Tree}](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdateFromRoot(description.tpe, f.name, Some(c.Expr(rename)), updater, b.tpe) + protected lazy val emptyWriterConfig: Expr[WriterDerivationConfig] = + c.Expr[WriterDerivationConfig]( + c.untypecheck( + q"tethys.derivation.builder.WriterDerivationConfig.empty" ) - - // ===== add ===== - case q"${rest: Tree}.add(${f: Tree}).apply[${a: Tree}](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.Add(description.tpe, c.Expr(f), updater, a.tpe) - ) - - // ===== update partial ===== - case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).apply[$_](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdatePartial(description.tpe, f.name, None, updater, a.tpe) - ) - - // ===== update partial with rename ===== - case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).apply[$_](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdatePartial(description.tpe, f.name, Some(c.Expr(rename)), updater, a.tpe) - ) - - // ===== update partial from root ===== - case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).fromRoot[$_](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdatePartialFromRoot(description.tpe, f.name, None, updater) - ) - - // ===== update partial from root with rename ===== - case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).fromRoot[$_](${updater: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(operations = description.operations :+ - BuilderMacroOperation.UpdatePartialFromRoot(description.tpe, f.name, Some(c.Expr(rename)), updater) - ) - - // ===== FieldStyle ===== - case q"${rest: Tree}.fieldStyle(${style: Tree})" => - val description = extractSimpleDescription(rest) - description.copy(config = c.Expr[WriterDerivationConfig]( - q"${description.config.tree}.withFieldStyle($style)" - )) - - // ===== NOPE ===== - case _ => abort(s"unknown tree: ${show(tree)}") - } + ) + + private def extractSimpleDescription(tree: Tree): MacroWriteDescription = + tree match { + // ===== ROOT ===== + case q"WriterBuilder.apply[${tpe: Tree}]" => + MacroWriteDescription(tpe.tpe, emptyWriterConfig, Seq()) + + case q"$_.WriterBuilder.apply[${tpe: Tree}]" => + MacroWriteDescription(tpe.tpe, emptyWriterConfig, Seq()) + + // ===== remove ===== + case q"${rest: Tree}.remove[${tpe: Tree}](${f: BuilderField})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.Remove(description.tpe, f.name) + ) + + // ===== rename ===== + case q"${rest: Tree}.rename[${a: Tree}](${f: BuilderField})(${rename: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.Update( + description.tpe, + f.name, + Some(c.Expr(rename)), + q"identity[${a.tpe}]", + a.tpe, + a.tpe + ) + ) + + // ===== update ===== + case q"${rest: Tree}.update[${a: Tree}](${f: BuilderField}).apply[${b: Tree}](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.Update( + description.tpe, + f.name, + None, + updater, + a.tpe, + b.tpe + ) + ) + + // ===== update with rename ===== + case q"${rest: Tree}.update[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).apply[${b: Tree}](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.Update( + description.tpe, + f.name, + Some(c.Expr(rename)), + updater, + a.tpe, + b.tpe + ) + ) + + // ===== update from root ===== + case q"${rest: Tree}.update[$_](${f: BuilderField}).fromRoot[${b: Tree}](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdateFromRoot( + description.tpe, + f.name, + None, + updater, + b.tpe + ) + ) + + // ===== update from root with rename ===== + case q"${rest: Tree}.update[$_](${f: BuilderField}).withRename(${rename: Tree}).fromRoot[${b: Tree}](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdateFromRoot( + description.tpe, + f.name, + Some(c.Expr(rename)), + updater, + b.tpe + ) + ) + + // ===== add ===== + case q"${rest: Tree}.add(${f: Tree}).apply[${a: Tree}](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.Add( + description.tpe, + c.Expr(f), + updater, + a.tpe + ) + ) + + // ===== update partial ===== + case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).apply[$_](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdatePartial( + description.tpe, + f.name, + None, + updater, + a.tpe + ) + ) + + // ===== update partial with rename ===== + case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).apply[$_](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdatePartial( + description.tpe, + f.name, + Some(c.Expr(rename)), + updater, + a.tpe + ) + ) + + // ===== update partial from root ===== + case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).fromRoot[$_](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdatePartialFromRoot( + description.tpe, + f.name, + None, + updater + ) + ) + + // ===== update partial from root with rename ===== + case q"${rest: Tree}.updatePartial[${a: Tree}](${f: BuilderField}).withRename(${rename: Tree}).fromRoot[$_](${updater: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(operations = + description.operations :+ + BuilderMacroOperation.UpdatePartialFromRoot( + description.tpe, + f.name, + Some(c.Expr(rename)), + updater + ) + ) + + // ===== FieldStyle ===== + case q"${rest: Tree}.fieldStyle(${style: Tree})" => + val description = extractSimpleDescription(rest) + description.copy(config = + c.Expr[WriterDerivationConfig]( + q"${description.config.tree}.withFieldStyle($style)" + ) + ) + + // ===== NOPE ===== + case _ => abort(s"unknown tree: ${show(tree)}") + } private def checkOperations(operations: Seq[BuilderMacroOperation]): Unit = { - //TODO + // TODO } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterDescriptorMacro.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterDescriptorMacro.scala index 01303858..06cc0961 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterDescriptorMacro.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/builder/WriterDescriptorMacro.scala @@ -4,14 +4,16 @@ import tethys.derivation.builder.{WriterBuilder, WriterDescription} import scala.reflect.macros.blackbox -/** - * Created by eld0727 on 23.04.17. +/** Created by eld0727 on 23.04.17. */ -class WriterDescriptorMacro(val c: blackbox.Context) extends WriterBuilderCommons { +class WriterDescriptorMacro(val c: blackbox.Context) + extends WriterBuilderCommons { import c.universe._ - def simpleDescription[A: WeakTypeTag](builder: Expr[WriterBuilder[A]]): Expr[WriterDescription[A]] = { + def simpleDescription[A: WeakTypeTag]( + builder: Expr[WriterBuilder[A]] + ): Expr[WriterDescription[A]] = { convertWriterBuilder[A](builder) } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/AutoDerivationMacro.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/AutoDerivationMacro.scala index 33c8c8e6..115383ed 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/AutoDerivationMacro.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/AutoDerivationMacro.scala @@ -5,13 +5,16 @@ import tethys.{JsonObjectWriter, JsonReader, JsonWriter} import scala.reflect.macros.blackbox -class AutoDerivationMacro(val c: blackbox.Context) extends WriterDerivation with ReaderDerivation { +class AutoDerivationMacro(val c: blackbox.Context) + extends WriterDerivation + with ReaderDerivation { import c.universe._ override protected def showError: Boolean = true - def jsonWriter[A: WeakTypeTag]: Expr[LowPriorityInstance[JsonObjectWriter[A]]] = { + def jsonWriter[A: WeakTypeTag] + : Expr[LowPriorityInstance[JsonObjectWriter[A]]] = { val tpe = weakTypeOf[A] val clazz = classSym(tpe) val instance: Expr[JsonWriter[A]] = { @@ -54,12 +57,11 @@ class AutoDerivationMacro(val c: blackbox.Context) extends WriterDerivation with case q"$_.${method: TermName}[${tt: Tree}]" => method -> tt.tpe } - val counts = tpes.map { - case (m1, t1) => - tpes.foldLeft(0) { - case (count, (m2, t2)) if m1 == m2 && t1 =:= t2 => count + 1 - case (count, _) => count - } + val counts = tpes.map { case (m1, t1) => + tpes.foldLeft(0) { + case (count, (m2, t2)) if m1 == m2 && t1 =:= t2 => count + 1 + case (count, _) => count + } } counts.exists(_ > 1) diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/DerivationUtils.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/DerivationUtils.scala index 7cc1cb9b..affb6b94 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/DerivationUtils.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/DerivationUtils.scala @@ -22,18 +22,20 @@ trait DerivationUtils extends LoggingUtils { sym.typeParams.map { param => val paramTpe = param.asType.toType val index = subst.indexWhere(_ =:= paramTpe) - if(index != -1) baseArgs(index) - else fail(s"$sym contains additional type parameter that can't be derived in compile time") + if (index != -1) baseArgs(index) + else + fail( + s"$sym contains additional type parameter that can't be derived in compile time" + ) } } appliedType(sym, substituteArgs) } - tpes.foldLeft(List.empty[Type]) { - case (acc, t) => - if(!acc.exists(_ =:= t)) t :: acc - else acc + tpes.foldLeft(List.empty[Type]) { case (acc, t) => + if (!acc.exists(_ =:= t)) t :: acc + else acc } } @@ -41,7 +43,8 @@ trait DerivationUtils extends LoggingUtils { classSym.knownDirectSubclasses.toList.flatMap { child0 => val child = child0.asClass child.typeSignature // Workaround for - if (child.isSealed && (child.isAbstract || child.isTrait)) collectSubclasses(child) + if (child.isSealed && (child.isAbstract || child.isTrait)) + collectSubclasses(child) else List(child) } } diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/ReaderDerivation.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/ReaderDerivation.scala index 2709dc00..4b8ff01c 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/ReaderDerivation.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/ReaderDerivation.scala @@ -3,7 +3,10 @@ package tethys.derivation.impl.derivation import tethys.JsonReader import tethys.derivation.builder.FieldStyle.StyleReference import tethys.derivation.builder.{FieldStyle, ReaderDerivationConfig} -import tethys.derivation.impl.builder.{ReaderBuilderUtils, ReaderDescriptionCommons} +import tethys.derivation.impl.builder.{ + ReaderBuilderUtils, + ReaderDescriptionCommons +} import tethys.derivation.impl.{BaseMacroDefinitions, CaseClassUtils} import tethys.readers.tokens.TokenIterator import tethys.readers.{FieldName, JsonReaderDefaultValue} @@ -11,7 +14,7 @@ import tethys.readers.{FieldName, JsonReaderDefaultValue} import scala.reflect.macros.blackbox trait ReaderDerivation - extends BaseMacroDefinitions + extends BaseMacroDefinitions with CaseClassUtils with DerivationUtils with ReaderDescriptionCommons { @@ -26,52 +29,66 @@ trait ReaderDerivation private val tokenIteratorType = tq"${typeOf[TokenIterator]}" private val readerErrorCompanion = q"$readersPack.ReaderError" - private val primitiveReadersCompanion = q"$readersPack.instances.PrimitiveReaders" + private val primitiveReadersCompanion = + q"$readersPack.instances.PrimitiveReaders" - private val jsonReaderDefaultValueType = tq"$readersPack.JsonReaderDefaultValue" + private val jsonReaderDefaultValueType = + tq"$readersPack.JsonReaderDefaultValue" private val jsonReaderType = tq"$tethysPack.JsonReader" private val somethingChanged = TermName(c.freshName("somethingChanged")) - - private sealed trait ReaderField { def value: TermName } - private case class SimpleField(name: String, - tpe: Type, - jsonName: String, - value: TermName, - isInitialized: TermName, - defaultValue: Option[Tree]) extends ReaderField - - private case class ExtractedField(name: String, - tpe: Type, - functionName: TermName, - args: List[FunctionArgument], - body: Tree, - value: TermName, - isInitialized: TermName) extends ReaderField - - private case class FromExtractedReader(name: String, - tpe: Type, - jsonName: String, - functionName: TermName, - args: List[FunctionArgument], - body: Tree, - value: TermName, - isInitialized: TermName, - tempIterator: TermName) extends ReaderField - - private case class FunctionArgument(field: Field, value: TermName, isInitialized: TermName) + private case class SimpleField( + name: String, + tpe: Type, + jsonName: String, + value: TermName, + isInitialized: TermName, + defaultValue: Option[Tree] + ) extends ReaderField + + private case class ExtractedField( + name: String, + tpe: Type, + functionName: TermName, + args: List[FunctionArgument], + body: Tree, + value: TermName, + isInitialized: TermName + ) extends ReaderField + + private case class FromExtractedReader( + name: String, + tpe: Type, + jsonName: String, + functionName: TermName, + args: List[FunctionArgument], + body: Tree, + value: TermName, + isInitialized: TermName, + tempIterator: TermName + ) extends ReaderField + + private case class FunctionArgument( + field: Field, + value: TermName, + isInitialized: TermName + ) def deriveReader[A: WeakTypeTag]: Expr[JsonReader[A]] = { deriveReader(ReaderMacroDescription(emptyReaderConfig, Seq())) } - def deriveReader[A: WeakTypeTag](description: ReaderMacroDescription): Expr[JsonReader[A]] = { + def deriveReader[A: WeakTypeTag]( + description: ReaderMacroDescription + ): Expr[JsonReader[A]] = { val tpe = weakTypeOf[A] val classDef = caseClassDefinition(tpe) - val config = scala.util.Try(c.eval(description.config)).getOrElse(c.eval(description.config)) + val config = scala.util + .Try(c.eval(description.config)) + .getOrElse(c.eval(description.config)) val readerFields = applyFieldStyle(config.fieldStyle) .andThen(applyOperations(description.operations)) @@ -87,7 +104,9 @@ trait ReaderDerivation }) val (typeReaders, readerTrees) = allocateReaders(readerFields) - val (typeDefaultValues, defaultValuesTrees) = allocateDefaultValues(readerFields) + val (typeDefaultValues, defaultValuesTrees) = allocateDefaultValues( + readerFields + ) val variablesTrees = allocateVariables(readerFields, typeDefaultValues) val functionsTrees = allocateFunctions(readerFields) val cases = allocateCases(config.isStrict, readerFields, typeReaders) @@ -133,21 +152,30 @@ trait ReaderDerivation } } - private def applyFieldStyle(fieldStyle: Option[FieldStyle]): List[SimpleField] => List[SimpleField] = readerFields => { + private def applyFieldStyle( + fieldStyle: Option[FieldStyle] + ): List[SimpleField] => List[SimpleField] = readerFields => { fieldStyle.fold(readerFields) { style => readerFields.map(f => f.copy(jsonName = style.applyStyle(f.jsonName))) } } - private def applyOperations(operations: Seq[ReaderMacroOperation]): List[ReaderField] => List[ReaderField] = readerFields => { - def mapField(fields: List[ReaderField], name: String)(f: SimpleField => ReaderField): List[ReaderField] = { + private def applyOperations( + operations: Seq[ReaderMacroOperation] + ): List[ReaderField] => List[ReaderField] = readerFields => { + def mapField(fields: List[ReaderField], name: String)( + f: SimpleField => ReaderField + ): List[ReaderField] = { fields.map { case field: SimpleField if field.name == name => f(field) - case field => field + case field => field } } - def buildArgument(field: Field, readerFields: List[ReaderField]): FunctionArgument = { + def buildArgument( + field: Field, + readerFields: List[ReaderField] + ): FunctionArgument = { field match { case Field.ClassField(name, _) => readerFields.collectFirst { @@ -164,46 +192,54 @@ trait ReaderDerivation List(FunctionArgument(field, f.value, f.isInitialized)) case f: ExtractedField => f.args.collectFirst { - case arg@FunctionArgument(rf: Field.RawField, _, _) if rf.name == name && rf.tpe =:= tpe => + case arg @ FunctionArgument(rf: Field.RawField, _, _) + if rf.name == name && rf.tpe =:= tpe => arg } case f: FromExtractedReader => f.args.collectFirst { - case arg@FunctionArgument(rf: Field.RawField, _, _) if rf.name == name && rf.tpe =:= tpe => + case arg @ FunctionArgument(rf: Field.RawField, _, _) + if rf.name == name && rf.tpe =:= tpe => arg } case _ => List.empty[FunctionArgument] } - possibleArg.headOption.getOrElse(FunctionArgument( - field = Field.RawField(name, tpe), - value = TermName(c.freshName(name + "Value")), - isInitialized = TermName(c.freshName(name + "Init")) - )) + possibleArg.headOption.getOrElse( + FunctionArgument( + field = Field.RawField(name, tpe), + value = TermName(c.freshName(name + "Value")), + isInitialized = TermName(c.freshName(name + "Init")) + ) + ) } } - operations.foldLeft(readerFields) { - case (fields, operation) => - operation match { - case ReaderMacroOperation.ExtractFieldAs(field, tpe, as, fun) => - mapField(fields, field)(f => ExtractedField( + operations.foldLeft(readerFields) { case (fields, operation) => + operation match { + case ReaderMacroOperation.ExtractFieldAs(field, tpe, as, fun) => + mapField(fields, field)(f => + ExtractedField( name = field, tpe = tpe, functionName = TermName(c.freshName(field + "Fun")), - args = List(FunctionArgument( - field = Field.RawField(f.jsonName, as), - value = TermName(c.freshName(field + "Value")), - isInitialized = TermName(c.freshName(field + "Init")) - )), + args = List( + FunctionArgument( + field = Field.RawField(f.jsonName, as), + value = TermName(c.freshName(field + "Value")), + isInitialized = TermName(c.freshName(field + "Init")) + ) + ), body = fun, value = f.value, isInitialized = f.isInitialized - )) + ) + ) - case ReaderMacroOperation.ExtractFieldValue(field, from, fun) => - mapField(fields, field)(f => ExtractedField( + case ReaderMacroOperation.ExtractFieldValue(field, from, fun) => + mapField(fields, field)(f => + ExtractedField( name = field, tpe = f.tpe, functionName = TermName(c.freshName(field + "Fun")), @@ -211,9 +247,11 @@ trait ReaderDerivation body = fun, value = f.value, isInitialized = f.isInitialized - )) - case ReaderMacroOperation.ExtractFieldReader(field, from, fun) => - mapField(fields, field)(f => FromExtractedReader( + ) + ) + case ReaderMacroOperation.ExtractFieldReader(field, from, fun) => + mapField(fields, field)(f => + FromExtractedReader( name = field, tpe = f.tpe, jsonName = f.jsonName, @@ -223,12 +261,15 @@ trait ReaderDerivation value = f.value, isInitialized = f.isInitialized, tempIterator = TermName(c.freshName(field + "TmpIter")) - )) - } + ) + ) + } } } - private def allocateReaders(readerFields: List[ReaderField]): (List[(Type, TermName)], List[Tree]) = { + private def allocateReaders( + readerFields: List[ReaderField] + ): (List[(Type, TermName)], List[Tree]) = { val jsonTypes = readerFields.flatMap { case f: SimpleField => List(f.tpe) @@ -242,13 +283,20 @@ trait ReaderDerivation case ((types, trees), tpe) if !types.exists(_._1 =:= tpe) => val term = TermName(c.freshName()) val reader = { - if (tpe =:= typeOf[Short]) q"private[this] val $term = $primitiveReadersCompanion.ShortJsonReader" - else if (tpe =:= typeOf[Int]) q"private[this] val $term = $primitiveReadersCompanion.IntJsonReader" - else if (tpe =:= typeOf[Long]) q"private[this] val $term = $primitiveReadersCompanion.LongJsonReader" - else if (tpe =:= typeOf[Float]) q"private[this] val $term = $primitiveReadersCompanion.FloatJsonReader" - else if (tpe =:= typeOf[Double]) q"private[this] val $term = $primitiveReadersCompanion.DoubleJsonReader" - else if (tpe =:= typeOf[Boolean]) q"private[this] val $term = $primitiveReadersCompanion.BooleanJsonReader" - else q"private[this] lazy val $term = implicitly[$jsonReaderType[$tpe]]" + if (tpe =:= typeOf[Short]) + q"private[this] val $term = $primitiveReadersCompanion.ShortJsonReader" + else if (tpe =:= typeOf[Int]) + q"private[this] val $term = $primitiveReadersCompanion.IntJsonReader" + else if (tpe =:= typeOf[Long]) + q"private[this] val $term = $primitiveReadersCompanion.LongJsonReader" + else if (tpe =:= typeOf[Float]) + q"private[this] val $term = $primitiveReadersCompanion.FloatJsonReader" + else if (tpe =:= typeOf[Double]) + q"private[this] val $term = $primitiveReadersCompanion.DoubleJsonReader" + else if (tpe =:= typeOf[Boolean]) + q"private[this] val $term = $primitiveReadersCompanion.BooleanJsonReader" + else + q"private[this] lazy val $term = implicitly[$jsonReaderType[$tpe]]" } (tpe -> term :: types, reader :: trees) @@ -256,7 +304,9 @@ trait ReaderDerivation } } - private def allocateDefaultValues(readerFields: List[ReaderField]): (List[(Type, TermName)], List[Tree]) = { + private def allocateDefaultValues( + readerFields: List[ReaderField] + ): (List[(Type, TermName)], List[Tree]) = { val allTypes = readerFields.flatMap { case f: SimpleField => List(f.tpe) @@ -276,22 +326,32 @@ trait ReaderDerivation } } - private def allocateVariables(readerFields: List[ReaderField], typeDefaultValues: List[(Type, TermName)]): List[Tree] = { - val possibleValues: List[(TermName, Type, Option[Tree])] = readerFields.flatMap { - case f: SimpleField => - List((f.value, f.tpe, f.defaultValue)) - case f: ExtractedField => - (f.value, f.tpe, None) :: f.args.map(arg => (arg.value, arg.field.tpe, None)) - case f: FromExtractedReader => - ((f.value, f.tpe, None)) :: f.args.map(arg => (arg.value, arg.field.tpe, None)) - } + private def allocateVariables( + readerFields: List[ReaderField], + typeDefaultValues: List[(Type, TermName)] + ): List[Tree] = { + val possibleValues: List[(TermName, Type, Option[Tree])] = + readerFields.flatMap { + case f: SimpleField => + List((f.value, f.tpe, f.defaultValue)) + case f: ExtractedField => + (f.value, f.tpe, None) :: f.args.map(arg => + (arg.value, arg.field.tpe, None) + ) + case f: FromExtractedReader => + ((f.value, f.tpe, None)) :: f.args.map(arg => + (arg.value, arg.field.tpe, None) + ) + } val (_, values) = possibleValues.foldLeft(List[TermName](), List[Tree]()) { case ((allocated, trees), (value, tpe, Some(defaultTree))) => val tree = q"var $value: $tpe = $defaultTree" (value :: allocated, tree :: trees) - case ((allocated, trees), (value, tpe, defaultTreeOpt)) if !allocated.contains(value) => - val tree = q"var $value: $tpe = ${typeDefaultValues.find(_._1 =:= tpe).get._2}" + case ((allocated, trees), (value, tpe, defaultTreeOpt)) + if !allocated.contains(value) => + val tree = + q"var $value: $tpe = ${typeDefaultValues.find(_._1 =:= tpe).get._2}" (value :: allocated, tree :: trees) case (res, _) => res @@ -307,49 +367,76 @@ trait ReaderDerivation (f.isInitialized, false) :: f.args.map(a => (a.isInitialized, false)) } .distinct - .map{ case (term, initialized) => q"var $term: Boolean = $initialized"} + .map { case (term, initialized) => q"var $term: Boolean = $initialized" } - val tempIterators = readerFields.collect { - case f: FromExtractedReader => - q"var ${f.tempIterator}: $tokenIteratorType = null" + val tempIterators = readerFields.collect { case f: FromExtractedReader => + q"var ${f.tempIterator}: $tokenIteratorType = null" } values ::: inits ::: tempIterators } - private def allocateFunctions(readerFields: List[ReaderField]): List[Tree] = readerFields.collect { - case f: ExtractedField => - q"private[this] val ${f.functionName} = ${f.body}" - case f: FromExtractedReader => - q"private[this] val ${f.functionName} = ${f.body}" - } - + private def allocateFunctions(readerFields: List[ReaderField]): List[Tree] = + readerFields.collect { + case f: ExtractedField => + q"private[this] val ${f.functionName} = ${f.body}" + case f: FromExtractedReader => + q"private[this] val ${f.functionName} = ${f.body}" + } - private def allocateCases(isStrict: Boolean, readerFields: List[ReaderField], readers: List[(Type, TermName)]): List[CaseDef] = { + private def allocateCases( + isStrict: Boolean, + readerFields: List[ReaderField], + readers: List[(Type, TermName)] + ): List[CaseDef] = { sealed trait FieldDef { def jsonName: String } - case class SimpleFieldDef(jsonName: String, reader: TermName, value: TermName, isInitialized: TermName) extends FieldDef - case class CustomReaderFieldDef(jsonName: String, tempIterator: TermName) extends FieldDef + case class SimpleFieldDef( + jsonName: String, + reader: TermName, + value: TermName, + isInitialized: TermName + ) extends FieldDef + case class CustomReaderFieldDef(jsonName: String, tempIterator: TermName) + extends FieldDef def findReader(tpe: Type) = readers.find(_._1 =:= tpe).get._2 val fieldDefs: List[FieldDef] = readerFields.flatMap { case f: SimpleField => - List(SimpleFieldDef(f.jsonName, findReader(f.tpe), f.value, f.isInitialized)) + List( + SimpleFieldDef( + f.jsonName, + findReader(f.tpe), + f.value, + f.isInitialized + ) + ) case f: ExtractedField => f.args.collect { - case FunctionArgument(Field.RawField(jsonName, tpe), value, isInitialized) => + case FunctionArgument( + Field.RawField(jsonName, tpe), + value, + isInitialized + ) => SimpleFieldDef(jsonName, findReader(tpe), value, isInitialized) } case f: FromExtractedReader => CustomReaderFieldDef(f.jsonName, f.tempIterator) :: f.args.collect { - case FunctionArgument(Field.RawField(jsonName, tpe), value, isInitialized) => + case FunctionArgument( + Field.RawField(jsonName, tpe), + value, + isInitialized + ) => SimpleFieldDef(jsonName, findReader(tpe), value, isInitialized) } } - val gropedDefs = fieldDefs.distinct.groupBy(_.jsonName).toList.sortBy(f => fieldDefs.indexWhere(_.jsonName == f._1)) + val gropedDefs = fieldDefs.distinct + .groupBy(_.jsonName) + .toList + .sortBy(f => fieldDefs.indexWhere(_.jsonName == f._1)) val res = gropedDefs.map { case (jsonName, List(fieldDef)) => @@ -365,13 +452,15 @@ trait ReaderDerivation } case (jsonName, defs) => val fieldIterator = TermName(c.freshName(jsonName + "Iter")) - val body = q"val $fieldIterator = $tokenIteratorTerm.collectExpression()" :: defs.flatMap { - case SimpleFieldDef(_, reader, value, isInitialized) => - q"$value = $reader.read($fieldIterator.copy())" :: - q"$isInitialized = true" :: Nil - case CustomReaderFieldDef(_, tempIterator) => - q"$tempIterator = $fieldIterator.copy()" :: Nil - } + val body = + q"val $fieldIterator = $tokenIteratorTerm.collectExpression()" :: defs + .flatMap { + case SimpleFieldDef(_, reader, value, isInitialized) => + q"$value = $reader.read($fieldIterator.copy())" :: + q"$isInitialized = true" :: Nil + case CustomReaderFieldDef(_, tempIterator) => + q"$tempIterator = $fieldIterator.copy()" :: Nil + } cq""" $jsonName => ..$body @@ -379,48 +468,65 @@ trait ReaderDerivation } val defaultCase = { - if(isStrict) { + if (isStrict) { val unexpectedName = TermName(c.freshName("unexpectedName")) val expectedNames = gropedDefs.map(_._1).mkString("'", "', '", "'") cq""" $unexpectedName => $readerErrorCompanion.wrongJson("unexpected field '" + $unexpectedName + "', expected one of " + $expectedNames)($fieldNameTmp) """ - } - else cq"_ => $tokenIteratorTerm.skipExpression()" + } else cq"_ => $tokenIteratorTerm.skipExpression()" } (res :+ defaultCase): List[CaseDef] } - private def allocateRawFieldsPostProcessing(readerFields: List[ReaderField]): Tree = { + private def allocateRawFieldsPostProcessing( + readerFields: List[ReaderField] + ): Tree = { type Res = (List[TermName], List[(Tree, String)], List[Tree]) - def buildTree(tpe: Type, jsonName: String, value: TermName, isInitialized: TermName): Res => Res = { - case (processed, possiblyNotInitialized, trees) => - extractDefaultValue(tpe) match { - case Some(defaultValue) => - val tree = - q""" + def buildTree( + tpe: Type, + jsonName: String, + value: TermName, + isInitialized: TermName + ): Res => Res = { case (processed, possiblyNotInitialized, trees) => + extractDefaultValue(tpe) match { + case Some(defaultValue) => + val tree = + q""" if(!$isInitialized) { $value = $defaultValue $isInitialized = true } """ - (value :: processed, possiblyNotInitialized, tree :: trees) - - case None => - (value :: processed, (q"!$isInitialized", jsonName) :: possiblyNotInitialized, trees) - } + (value :: processed, possiblyNotInitialized, tree :: trees) + + case None => + ( + value :: processed, + (q"!$isInitialized", jsonName) :: possiblyNotInitialized, + trees + ) + } } - - val (_, possiblyNotInitialized, defaultValues) = readerFields.foldLeft((List[TermName](), List[(Tree, String)](), List[Tree]())) { + val (_, possiblyNotInitialized, defaultValues) = readerFields.foldLeft( + (List[TermName](), List[(Tree, String)](), List[Tree]()) + ) { case (res, f: SimpleField) => buildTree(f.tpe, f.jsonName, f.value, f.isInitialized)(res) case (tuple, f: ExtractedField) => f.args.foldLeft(tuple) { - case (res, FunctionArgument(Field.RawField(jsonName, tpe), value, isInitialized)) if !res._1.contains(value) => + case ( + res, + FunctionArgument( + Field.RawField(jsonName, tpe), + value, + isInitialized + ) + ) if !res._1.contains(value) => buildTree(tpe, jsonName, value, isInitialized)(res) case (res, _) => res @@ -428,7 +534,14 @@ trait ReaderDerivation case (tuple, f: FromExtractedReader) => f.args.foldLeft(tuple) { - case (res, FunctionArgument(Field.RawField(jsonName, tpe), value, isInitialized)) if !res._1.contains(value) => + case ( + res, + FunctionArgument( + Field.RawField(jsonName, tpe), + value, + isInitialized + ) + ) if !res._1.contains(value) => buildTree(tpe, jsonName, value, isInitialized)(res) case (res, _) => res @@ -442,12 +555,12 @@ trait ReaderDerivation case Nil => q"..${defaultValues.reverse}" - case xs@(headNotInit, _) :: tail => + case xs @ (headNotInit, _) :: tail => val uninitializedFields = TermName(c.freshName("uninitializedFields")) - val predicate = tail.foldLeft[Tree](q"$headNotInit")((a, b) => q"$a || ${b._1}") - val fields = xs.map { - case (notInit, name) => - q""" + val predicate = + tail.foldLeft[Tree](q"$headNotInit")((a, b) => q"$a || ${b._1}") + val fields = xs.map { case (notInit, name) => + q""" if($notInit) { $uninitializedFields += $name } @@ -465,30 +578,46 @@ trait ReaderDerivation } } - private def allocateTransformationsLoop(readerFields: List[ReaderField]): Tree = { - val (_, possiblyNotInitializedFields, defaults, loopActions) = readerFields.foldLeft((List[TermName](), List[(Tree, String)](), List[Tree](), List[Tree]())) { - case ((processed, possiblyNotInitialized, defaultTrees, loopTrees), field) => - def buildTransformation(name: String, - tpe: Type, - args: List[FunctionArgument], - value: TermName, - isInitialized: TermName, - tempIterator: Option[TermName])(valueAction: Tree) = { - val start = tempIterator match { - case Some(iter) => - q"!$isInitialized && $iter != null" - case None => - q"!$isInitialized" - } - val canProcess = args.foldLeft[Tree](start) { - case (current, FunctionArgument(_: Field.ClassField, _, argIsInitialized)) => - q"$current && $argIsInitialized" - case (current, _) => //RawField already checked in allocateRawFieldsPostProcessing - current - } + private def allocateTransformationsLoop( + readerFields: List[ReaderField] + ): Tree = { + val (_, possiblyNotInitializedFields, defaults, loopActions) = + readerFields.foldLeft( + (List[TermName](), List[(Tree, String)](), List[Tree](), List[Tree]()) + ) { + case ( + (processed, possiblyNotInitialized, defaultTrees, loopTrees), + field + ) => + def buildTransformation( + name: String, + tpe: Type, + args: List[FunctionArgument], + value: TermName, + isInitialized: TermName, + tempIterator: Option[TermName] + )(valueAction: Tree) = { + val start = tempIterator match { + case Some(iter) => + q"!$isInitialized && $iter != null" + case None => + q"!$isInitialized" + } + val canProcess = args.foldLeft[Tree](start) { + case ( + current, + FunctionArgument(_: Field.ClassField, _, argIsInitialized) + ) => + q"$current && $argIsInitialized" + case ( + current, + _ + ) => // RawField already checked in allocateRawFieldsPostProcessing + current + } - val loopAction = - q""" + val loopAction = + q""" if($canProcess) { $value = $valueAction $isInitialized = true @@ -496,42 +625,77 @@ trait ReaderDerivation } """ - extractDefaultValue(tpe) match { - case Some(defaultValue) => - val tree = - q""" + extractDefaultValue(tpe) match { + case Some(defaultValue) => + val tree = + q""" if(!$isInitialized) { $value = $defaultValue $isInitialized = true } """ - (value :: processed, possiblyNotInitialized, tree :: defaultTrees, loopAction :: loopTrees) - - case None => - (value :: processed, (q"!$isInitialized", name) :: possiblyNotInitialized, defaultTrees, loopAction :: loopTrees) + ( + value :: processed, + possiblyNotInitialized, + tree :: defaultTrees, + loopAction :: loopTrees + ) + + case None => + ( + value :: processed, + (q"!$isInitialized", name) :: possiblyNotInitialized, + defaultTrees, + loopAction :: loopTrees + ) + } } - } - field match { - case ExtractedField(name, tpe, functionName, args, _, value, isInitialized) => - buildTransformation(name, tpe, args, value, isInitialized, None) { - q""" + field match { + case ExtractedField( + name, + tpe, + functionName, + args, + _, + value, + isInitialized + ) => + buildTransformation(name, tpe, args, value, isInitialized, None) { + q""" $functionName.apply(..${args.map(_.value)}) """ - } + } - case FromExtractedReader(name, tpe, _, functionName, args, _, value, isInitialized, tempIterator) => - buildTransformation(name, tpe, args, value, isInitialized, Some(tempIterator)) { - q""" + case FromExtractedReader( + name, + tpe, + _, + functionName, + args, + _, + value, + isInitialized, + tempIterator + ) => + buildTransformation( + name, + tpe, + args, + value, + isInitialized, + Some(tempIterator) + ) { + q""" implicit val $fieldNameTerm: $fieldNameType = $fieldNameTmp.appendFieldName($name) $functionName.apply(..${args.map(_.value)}).read($tempIterator) """ - } + } - case _ => - (processed, possiblyNotInitialized, defaultTrees, loopTrees) - } - } + case _ => + (processed, possiblyNotInitialized, defaultTrees, loopTrees) + } + } val loop = q""" @@ -549,12 +713,12 @@ trait ReaderDerivation ..${defaults.reverse} """ - case xs@(headNotInit, _) :: tail => + case xs @ (headNotInit, _) :: tail => val uninitializedFields = TermName(c.freshName("uninitializedFields")) - val predicate = tail.foldLeft[Tree](q"$headNotInit")((a, b) => q"$a || ${b._1}") - val fields = xs.map { - case (notInit, name) => - q""" + val predicate = + tail.foldLeft[Tree](q"$headNotInit")((a, b) => q"$a || ${b._1}") + val fields = xs.map { case (notInit, name) => + q""" if($notInit) { $uninitializedFields += $name } @@ -576,14 +740,20 @@ trait ReaderDerivation private def extractDefaultValue(tpe: Type): Option[Tree] = { c.typecheck(q"implicitly[$jsonReaderDefaultValueType[$tpe]]") match { case q"$_.implicitly[$_]($defaultValue)" => - val mbValue = defaultValue.tpe.typeSymbol.annotations.map(_.tree).collectFirst { - case q"new $clazz(${value: Tree})" if clazz.tpe =:= typeOf[JsonReaderDefaultValue.ReaderDefaultValue] => - value - } + val mbValue = + defaultValue.tpe.typeSymbol.annotations.map(_.tree).collectFirst { + case q"new $clazz(${value: Tree})" + if clazz.tpe =:= typeOf[ + JsonReaderDefaultValue.ReaderDefaultValue + ] => + value + } mbValue match { case None => - abort(s"JsonReaderDefaultValue '${defaultValue.tpe}' is not annotated with 'ReaderDefaultValue'") + abort( + s"JsonReaderDefaultValue '${defaultValue.tpe}' is not annotated with 'ReaderDefaultValue'" + ) case Some(q"null") => None case Some(value) => diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/SemiautoDerivationMacro.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/SemiautoDerivationMacro.scala index bf08b8d5..343f9e38 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/SemiautoDerivationMacro.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/SemiautoDerivationMacro.scala @@ -7,9 +7,9 @@ import tethys.{JsonObjectWriter, JsonReader} import scala.reflect.macros.blackbox class SemiautoDerivationMacro(val c: blackbox.Context) - extends WriterDerivation - with ReaderDerivation - with WriterBuilderCommons { + extends WriterDerivation + with ReaderDerivation + with WriterBuilderCommons { import c.universe._ @@ -25,12 +25,18 @@ class SemiautoDerivationMacro(val c: blackbox.Context) } } - def jsonWriterWithBuilder[A: WeakTypeTag](builder: Expr[WriterBuilder[A]]): Expr[JsonObjectWriter[A]] = { + def jsonWriterWithBuilder[A: WeakTypeTag]( + builder: Expr[WriterBuilder[A]] + ): Expr[JsonObjectWriter[A]] = { val description = convertWriterBuilder[A](builder) - describedJsonWriter[A](c.Expr[WriterDescription[A]](c.typecheck(description.tree))) + describedJsonWriter[A]( + c.Expr[WriterDescription[A]](c.typecheck(description.tree)) + ) } - def jsonWriterWithConfig[A: WeakTypeTag](config: Expr[WriterDerivationConfig]): Expr[JsonObjectWriter[A]] = { + def jsonWriterWithConfig[A: WeakTypeTag]( + config: Expr[WriterDerivationConfig] + ): Expr[JsonObjectWriter[A]] = { val tpe = weakTypeOf[A] val clazz = classSym(tpe) @@ -43,13 +49,17 @@ class SemiautoDerivationMacro(val c: blackbox.Context) ) ) } else if (clazz.isSealed) { - deriveWriterForSealedClass[A](c.Expr[WriterDerivationConfig](c.untypecheck(config.tree))) + deriveWriterForSealedClass[A]( + c.Expr[WriterDerivationConfig](c.untypecheck(config.tree)) + ) } else { abort(s"Can't auto derive JsonWriter[$tpe]") } } - def describedJsonWriter[A: WeakTypeTag](description: Expr[WriterDescription[A]]): Expr[JsonObjectWriter[A]] = { + def describedJsonWriter[A: WeakTypeTag]( + description: Expr[WriterDescription[A]] + ): Expr[JsonObjectWriter[A]] = { val tpe = weakTypeOf[A] if (!isCaseClass(tpe)) { abort(s"Can't auto derive JsonWriter[$tpe]") @@ -67,12 +77,18 @@ class SemiautoDerivationMacro(val c: blackbox.Context) } } - def jsonReaderWithBuilder[A: WeakTypeTag](builder: Expr[ReaderBuilder[A]]): Expr[JsonReader[A]] = { + def jsonReaderWithBuilder[A: WeakTypeTag]( + builder: Expr[ReaderBuilder[A]] + ): Expr[JsonReader[A]] = { val description = convertReaderBuilder[A](builder) - describedJsonReader[A](c.Expr[ReaderDescription[A]](c.typecheck(description.tree))) + describedJsonReader[A]( + c.Expr[ReaderDescription[A]](c.typecheck(description.tree)) + ) } - def describedJsonReader[A: WeakTypeTag](description: Expr[ReaderDescription[A]]): Expr[JsonReader[A]] = { + def describedJsonReader[A: WeakTypeTag]( + description: Expr[ReaderDescription[A]] + ): Expr[JsonReader[A]] = { val tpe = weakTypeOf[A] if (isCaseClass(tpe)) { deriveReader[A](unliftReaderMacroDescription(description)) @@ -81,29 +97,35 @@ class SemiautoDerivationMacro(val c: blackbox.Context) } } - def jsonReaderWithConfig[A: WeakTypeTag](config: Expr[ReaderDerivationConfig]): Expr[JsonReader[A]] = { + def jsonReaderWithConfig[A: WeakTypeTag]( + config: Expr[ReaderDerivationConfig] + ): Expr[JsonReader[A]] = { val tpe = weakTypeOf[A] if (isCaseClass(tpe)) { - deriveReader[A](ReaderMacroDescription( - config = c.Expr[ReaderDerivationConfig](c.untypecheck(config.tree)), - operations = Seq() - )) + deriveReader[A]( + ReaderMacroDescription( + config = c.Expr[ReaderDerivationConfig](c.untypecheck(config.tree)), + operations = Seq() + ) + ) } else { fail(s"Can't auto derive JsonReader[$tpe]") } } - private def unliftWriterMacroDescription[A: WeakTypeTag](description: Expr[WriterDescription[A]]): MacroWriteDescription = { + private def unliftWriterMacroDescription[A: WeakTypeTag]( + description: Expr[WriterDescription[A]] + ): MacroWriteDescription = { description.tree match { case Untyped(q"${description: MacroWriteDescription}") => description } } - private def unliftReaderMacroDescription[A: WeakTypeTag](description: Expr[ReaderDescription[A]]): ReaderMacroDescription = { + private def unliftReaderMacroDescription[A: WeakTypeTag]( + description: Expr[ReaderDescription[A]] + ): ReaderMacroDescription = { description.tree match { case Untyped(q"${description: ReaderMacroDescription}") => description } } } - - diff --git a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/WriterDerivation.scala b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/WriterDerivation.scala index 0ad4279d..4efc711d 100644 --- a/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/WriterDerivation.scala +++ b/modules/macro-derivation/src/main/scala-2/tethys/derivation/impl/derivation/WriterDerivation.scala @@ -10,7 +10,7 @@ import scala.annotation.tailrec import scala.reflect.macros.blackbox trait WriterDerivation - extends WriterBuilderCommons + extends WriterBuilderCommons with CaseClassUtils with BaseMacroDefinitions with DerivationUtils { @@ -37,27 +37,27 @@ trait WriterDerivation deriveWriterForSealedClass[A](emptyWriterConfig) } - def deriveWriterForSealedClass[A: WeakTypeTag](config: c.Expr[WriterDerivationConfig]): Expr[JsonObjectWriter[A]] = { + def deriveWriterForSealedClass[A: WeakTypeTag]( + config: c.Expr[WriterDerivationConfig] + ): Expr[JsonObjectWriter[A]] = { val tpe = weakTypeOf[A] val types = collectDistinctSubtypes(tpe).sortBy(_.typeSymbol.fullName) - if(types.isEmpty) fail(s"${tpe.typeSymbol} has no known direct subclass") + if (types.isEmpty) fail(s"${tpe.typeSymbol} has no known direct subclass") else { val terms = types.map(_ => TermName(c.freshName())) - val writers = types.zip(terms).map { - case (subtype, term) => - q"private[this] lazy val $term = implicitly[$jsonObjectWriterType[$subtype]]" + val writers = types.zip(terms).map { case (subtype, term) => + q"private[this] lazy val $term = implicitly[$jsonObjectWriterType[$subtype]]" } - val subClassesCases = types.zip(terms).map { - case (subtype, writer) => - val term = TermName(c.freshName("sub")) - val discriminatorTerm = TermName(c.freshName("discriminator")) - val typeName = subtype.typeSymbol.asClass.name.decodedName.toString.trim - cq"""$term: $subtype => { + val subClassesCases = types.zip(terms).map { case (subtype, writer) => + val term = TermName(c.freshName("sub")) + val discriminatorTerm = TermName(c.freshName("discriminator")) + val typeName = subtype.typeSymbol.asClass.name.decodedName.toString.trim + cq"""$term: $subtype => { $writer.writeValues($term, $tokenWriterTerm) ${config.tree}.discriminator.foreach { $discriminatorTerm: String => implicitly[$jsonWriterType[String]].write($discriminatorTerm, $typeName, $tokenWriterTerm) @@ -83,12 +83,16 @@ trait WriterDerivation } } - def deriveWriter[A: WeakTypeTag](description: MacroWriteDescription): Expr[JsonObjectWriter[A]] = { + def deriveWriter[A: WeakTypeTag]( + description: MacroWriteDescription + ): Expr[JsonObjectWriter[A]] = { val tpe = description.tpe - val config = scala.util.Try(c.eval(description.config)).getOrElse(c.eval(description.config)) + val config = scala.util + .Try(c.eval(description.config)) + .getOrElse(c.eval(description.config)) val writerFields = applyFieldStyle(config.fieldStyle) - .andThen(applyDescriptionOperations(description.operations)) - .apply(makeFields[A]) + .andThen(applyDescriptionOperations(description.operations)) + .apply(makeFields[A]) val (typeWriters, writerTrees) = allocateWriters(writerFields) val functions = allocateFunctions(writerFields) @@ -112,11 +116,14 @@ trait WriterDerivation q"$name.apply($tree)" } - val resultCases = cases.map { - case CaseDef(d, g, body) => - val fieldTpe = unwrapType(body.tpe.finalResultType) - val writerTerm = typeWriters.find(_._1 =:= fieldTpe).get._2 - CaseDef(d, g, q"$writerTerm.write(${jsonName.tree}, $body, $tokenWriterTerm)") + val resultCases = cases.map { case CaseDef(d, g, body) => + val fieldTpe = unwrapType(body.tpe.finalResultType) + val writerTerm = typeWriters.find(_._1 =:= fieldTpe).get._2 + CaseDef( + d, + g, + q"$writerTerm.write(${jsonName.tree}, $body, $tokenWriterTerm)" + ) } q"$valueTree match { case ..$resultCases }" @@ -143,13 +150,29 @@ trait WriterDerivation sealed trait Extractor case class InlineExtract(tree: Tree) extends Extractor - case class FunctionExtractor(name: TermName, arg: InlineExtract, from: Type, to: Type, body: Tree) extends Extractor + case class FunctionExtractor( + name: TermName, + arg: InlineExtract, + from: Type, + to: Type, + body: Tree + ) extends Extractor private sealed trait WriterField { def name: String } - private case class SimpleWriterField(name: String, jsonName: Expr[String], tpe: Type, extractor: Extractor) extends WriterField - private case class PartialExtractedField(name: String, jsonName: Expr[String], argExtractor: Extractor, cases: List[CaseDef]) extends WriterField + private case class SimpleWriterField( + name: String, + jsonName: Expr[String], + tpe: Type, + extractor: Extractor + ) extends WriterField + private case class PartialExtractedField( + name: String, + jsonName: Expr[String], + argExtractor: Extractor, + cases: List[CaseDef] + ) extends WriterField private def makeFields[A: WeakTypeTag]: List[WriterField] = { val classDef = caseClassDefinition[A] @@ -163,31 +186,40 @@ trait WriterDerivation } } - private def applyFieldStyle(fieldStyle: Option[FieldStyle]): List[WriterField] => List[WriterField] = writerFields => { + private def applyFieldStyle( + fieldStyle: Option[FieldStyle] + ): List[WriterField] => List[WriterField] = writerFields => { fieldStyle.fold(writerFields) { style => writerFields.map { - case field: SimpleWriterField => field.copy(jsonName = c.Expr[String](q"${style.applyStyle(field.name)}")) + case field: SimpleWriterField => + field.copy(jsonName = + c.Expr[String](q"${style.applyStyle(field.name)}") + ) case field => field } } } - private def applyDescriptionOperations(operations: Seq[BuilderMacroOperation]): List[WriterField] => List[WriterField] = writerFields => { - def mapField(fields: List[WriterField], name: String)(f: SimpleWriterField => WriterField): List[WriterField] = { + private def applyDescriptionOperations( + operations: Seq[BuilderMacroOperation] + ): List[WriterField] => List[WriterField] = writerFields => { + def mapField(fields: List[WriterField], name: String)( + f: SimpleWriterField => WriterField + ): List[WriterField] = { fields.map { case field: SimpleWriterField if field.name == name => f(field) - case field => field + case field => field } } - operations.foldLeft(writerFields) { - case (fields, operation) => - operation match { - case BuilderMacroOperation.Remove(_, field) => - fields.filterNot(_.name == field) + operations.foldLeft(writerFields) { case (fields, operation) => + operation match { + case BuilderMacroOperation.Remove(_, field) => + fields.filterNot(_.name == field) - case BuilderMacroOperation.Update(_, field, name, fun, from, to) => - mapField(fields, field)(f => SimpleWriterField( + case BuilderMacroOperation.Update(_, field, name, fun, from, to) => + mapField(fields, field)(f => + SimpleWriterField( name = field, jsonName = name.getOrElse(f.jsonName), tpe = to, @@ -198,10 +230,12 @@ trait WriterDerivation to = to, body = fun ) - )) + ) + ) - case BuilderMacroOperation.UpdateFromRoot(tpe, field, name, fun, to) => - mapField(fields, field)(f => SimpleWriterField( + case BuilderMacroOperation.UpdateFromRoot(tpe, field, name, fun, to) => + mapField(fields, field)(f => + SimpleWriterField( name = field, jsonName = name.getOrElse(f.jsonName), tpe = to, @@ -212,30 +246,38 @@ trait WriterDerivation to = to, body = fun ) - )) + ) + ) - case BuilderMacroOperation.UpdatePartial(_, field, name, fun, from) => - mapField(fields, field)(f => PartialExtractedField( + case BuilderMacroOperation.UpdatePartial(_, field, name, fun, from) => + mapField(fields, field)(f => + PartialExtractedField( name = field, jsonName = name.getOrElse(f.jsonName), argExtractor = InlineExtract(q"$valueTerm.${TermName(field)}"), cases = fun match { - case q"{ case ..$cases }" => cases.asInstanceOf[Seq[CaseDef]].toList + case q"{ case ..$cases }" => + cases.asInstanceOf[Seq[CaseDef]].toList } - )) + ) + ) - case BuilderMacroOperation.UpdatePartialFromRoot(_, field, name, fun) => - mapField(fields, field)(f => PartialExtractedField( + case BuilderMacroOperation.UpdatePartialFromRoot(_, field, name, fun) => + mapField(fields, field)(f => + PartialExtractedField( name = field, jsonName = name.getOrElse(f.jsonName), argExtractor = InlineExtract(q"$valueTerm"), cases = fun match { - case q"{ case ..$cases }" => cases.asInstanceOf[Seq[CaseDef]].toList + case q"{ case ..$cases }" => + cases.asInstanceOf[Seq[CaseDef]].toList } - )) + ) + ) - case BuilderMacroOperation.Add(tpe, field, fun, to) => - fields ::: List(SimpleWriterField( + case BuilderMacroOperation.Add(tpe, field, fun, to) => + fields ::: List( + SimpleWriterField( name = "__---nope---__", jsonName = field, tpe = to, @@ -246,25 +288,31 @@ trait WriterDerivation to = to, body = fun ) - )) - } + ) + ) + } } } - private def allocateWriters(writerFields: List[WriterField]): (List[(Type, TermName)], List[Tree]) = { + private def allocateWriters( + writerFields: List[WriterField] + ): (List[(Type, TermName)], List[Tree]) = { val types = writerFields.flatMap { case SimpleWriterField(_, _, tpe, _) => List(tpe) - case PartialExtractedField(_, _, _, cases) => cases.map { - case CaseDef(_, _, body) => unwrapType(body.tpe.finalResultType) - } + case PartialExtractedField(_, _, _, cases) => + cases.map { case CaseDef(_, _, body) => + unwrapType(body.tpe.finalResultType) + } } types.foldLeft(List[(Type, TermName)](), List[Tree]()) { case ((terms, trees), tpe) if !terms.exists(_._1 =:= tpe) => val term = TermName(c.freshName()) val tree = { - if (tpe =:= typeOf[Nothing]) q"private[this] lazy val $term = $writersPack.EmptyWriters.emptyWriter[Nothing]" - else q"private[this] lazy val $term = implicitly[$jsonWriterType[$tpe]]" + if (tpe =:= typeOf[Nothing]) + q"private[this] lazy val $term = $writersPack.EmptyWriters.emptyWriter[Nothing]" + else + q"private[this] lazy val $term = implicitly[$jsonWriterType[$tpe]]" } ((tpe, term) :: terms, tree :: trees) @@ -274,9 +322,19 @@ trait WriterDerivation private def allocateFunctions(writerFields: List[WriterField]): List[Tree] = { writerFields.flatMap { - case SimpleWriterField(_, _, _, FunctionExtractor(name, _, from, to, body)) => + case SimpleWriterField( + _, + _, + _, + FunctionExtractor(name, _, from, to, body) + ) => q"private[this] val $name: $from => $to = $body" :: Nil - case PartialExtractedField(_, _, FunctionExtractor(name, _, from, to, body), _) => + case PartialExtractedField( + _, + _, + FunctionExtractor(name, _, from, to, body), + _ + ) => q"private[this] val $name: $from => $to = $body" :: Nil case _ => Nil @@ -295,6 +353,6 @@ trait WriterDerivation @tailrec private def unwrapType(tpe: Type): Type = tpe match { case ConstantType(const) => unwrapType(const.tpe) - case _ => tpe + case _ => tpe } } diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithType.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithType.scala index 67d306b8..01667b2c 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithType.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithType.scala @@ -5,4 +5,4 @@ sealed trait ADTWithType[A] object ADTWithType { case class ADTWithTypeA[A](a: A) extends ADTWithType[A] case class ADTWithTypeB[A](a: A, b: ADTWithType[A]) extends ADTWithType[A] -} \ No newline at end of file +} diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithWrongType.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithWrongType.scala index ea278168..66aa5d9e 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithWrongType.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/ADTWithWrongType.scala @@ -6,6 +6,7 @@ object ADTWithWrongType { case class ADTWithWrongTypeA[A](a: A) extends ADTWithWrongType[A] - case class ADTWithWrongTypeB[A, B](a: A, b: ADTWithWrongType[B]) extends ADTWithWrongType[A] + case class ADTWithWrongTypeB[A, B](a: A, b: ADTWithWrongType[B]) + extends ADTWithWrongType[A] -} \ No newline at end of file +} diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoReaderDerivationTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoReaderDerivationTest.scala index 8b89ecab..e9cd824c 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoReaderDerivationTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoReaderDerivationTest.scala @@ -17,18 +17,19 @@ class AutoReaderDerivationTest extends AnyFlatSpec with Matchers { res } - behavior of "auto derivation" it should "derive readers for simple case class hierarchy" in { - read[JsonTreeTestData](obj( - "a" -> 1, - "b" -> true, - "c" -> obj( - "d" -> obj( - "a" -> 2 + read[JsonTreeTestData]( + obj( + "a" -> 1, + "b" -> true, + "c" -> obj( + "d" -> obj( + "a" -> 2 + ) ) ) - )) shouldBe JsonTreeTestData( + ) shouldBe JsonTreeTestData( a = 1, b = true, c = C(D(2)) @@ -36,31 +37,38 @@ class AutoReaderDerivationTest extends AnyFlatSpec with Matchers { } it should "derive reader for recursive type" in { - read[RecursiveType](obj( - "a" -> 1, - "children" -> arr( - obj( - "a" -> 2, - "children" -> arr() - ), - obj( - "a" -> 3, - "children" -> arr() + read[RecursiveType]( + obj( + "a" -> 1, + "children" -> arr( + obj( + "a" -> 2, + "children" -> arr() + ), + obj( + "a" -> 3, + "children" -> arr() + ) ) ) - )) shouldBe RecursiveType(1, Seq(RecursiveType(2), RecursiveType(3))) + ) shouldBe RecursiveType(1, Seq(RecursiveType(2), RecursiveType(3))) } it should "derive reader for A => B => A cycle" in { - read[ComplexRecursionA](obj( - "a" -> 1, - "b" -> obj( - "b" -> 2, - "a" -> obj( - "a" -> 3 + read[ComplexRecursionA]( + obj( + "a" -> 1, + "b" -> obj( + "b" -> 2, + "a" -> obj( + "a" -> 3 + ) ) ) - )) shouldBe ComplexRecursionA(1, Some(ComplexRecursionB(2, ComplexRecursionA(3, None)))) + ) shouldBe ComplexRecursionA( + 1, + Some(ComplexRecursionB(2, ComplexRecursionA(3, None))) + ) } } diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoWriterDerivationTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoWriterDerivationTest.scala index e66ac168..db32a791 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoWriterDerivationTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/AutoWriterDerivationTest.scala @@ -27,15 +27,23 @@ class AutoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "auto derive writers for a lot of embedded classes" in { - Seq(SeqMaster1(Seq(SeqMaster2(Seq(SeqMaster3(Seq(SeqMaster4(Seq(1))))))))).asTokenList shouldBe arr( + Seq( + SeqMaster1(Seq(SeqMaster2(Seq(SeqMaster3(Seq(SeqMaster4(Seq(1)))))))) + ).asTokenList shouldBe arr( obj( - "a" -> arr(obj( - "a" -> arr(obj( - "a" -> arr(obj( - "a" -> arr(1) - )) - )) - )) + "a" -> arr( + obj( + "a" -> arr( + obj( + "a" -> arr( + obj( + "a" -> arr(1) + ) + ) + ) + ) + ) + ) ) ) } @@ -53,7 +61,10 @@ class AutoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "auto derive writer for A => B => A cycle" in { - ComplexRecursionA(1, Some(ComplexRecursionB(2, ComplexRecursionA(3, None)))).asTokenList shouldBe obj( + ComplexRecursionA( + 1, + Some(ComplexRecursionB(2, ComplexRecursionA(3, None))) + ).asTokenList shouldBe obj( "a" -> 1, "b" -> obj( "b" -> 2, @@ -65,7 +76,9 @@ class AutoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "auto derive writer for sealed cyclic trait with type parameter" in { - (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[Int]).asTokenList shouldBe obj( + (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[ + Int + ]).asTokenList shouldBe obj( "a" -> 1, "b" -> obj( "a" -> 2 @@ -74,15 +87,19 @@ class AutoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "auto derive writer that normally concatenates with other JsonObjectWriter's" in { - implicit def recursionTraitWithTypeWriter[B: JsonWriter]: JsonObjectWriter[ADTWithType[B]] = { - val simpleJsonObjectWriter = SimpleJsonObjectWriter[ADTWithType[B]].addField("clazz") { - case _: ADTWithTypeA[B] => "ADTWithTypeA" - case _: ADTWithTypeB[B] => "ADTWithTypeB" - } + implicit def recursionTraitWithTypeWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithType[B]] = { + val simpleJsonObjectWriter = + SimpleJsonObjectWriter[ADTWithType[B]].addField("clazz") { + case _: ADTWithTypeA[B] => "ADTWithTypeA" + case _: ADTWithTypeB[B] => "ADTWithTypeB" + } simpleJsonObjectWriter ++ jsonWriter[ADTWithType[B]] } - (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[Int]).asTokenList shouldBe obj( + (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[ + Int + ]).asTokenList shouldBe obj( "clazz" -> "ADTWithTypeB", "a" -> 1, "b" -> obj( @@ -97,12 +114,16 @@ class AutoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "auto derive writer for simple sealed trait with hierarchy" in { - implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = JsonWriter.obj[SimpleClass].addField("b")(_.b) - implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = JsonWriter.obj.addField("type")(_ => "JustObject") + implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = + JsonWriter.obj[SimpleClass].addField("b")(_.b) + implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = + JsonWriter.obj.addField("type")(_ => "JustObject") - implicit val sealedWriter: JsonWriter[SimpleSealedType] = jsonWriter[SimpleSealedType] + implicit val sealedWriter: JsonWriter[SimpleSealedType] = + jsonWriter[SimpleSealedType] - def write(simpleSealedType: SimpleSealedType): List[TokenNode] = simpleSealedType.asTokenList + def write(simpleSealedType: SimpleSealedType): List[TokenNode] = + simpleSealedType.asTokenList write(CaseClass(1)) shouldBe obj("a" -> 1) write(new SimpleClass(2)) shouldBe obj("b" -> 2) diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/RedundantJsonReaderTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/RedundantJsonReaderTest.scala index 7aa471d6..bc5b0fa6 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/RedundantJsonReaderTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/RedundantJsonReaderTest.scala @@ -29,13 +29,16 @@ class RedundantJsonReaderTest extends AnyFlatSpec with Matchers { implicit val reader: JsonReader[BaseClass] = jsonReader[BaseClass] { describe { ReaderBuilder[BaseClass] - .extract(_.r).from("intField".as[Int])(RedundantClass.apply) + .extract(_.r) + .from("intField".as[Int])(RedundantClass.apply) } } - read[BaseClass](obj( - "intField" -> 1 - )) shouldBe BaseClass(RedundantClass(1)) + read[BaseClass]( + obj( + "intField" -> 1 + ) + ) shouldBe BaseClass(RedundantClass(1)) } } diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoReaderDerivationTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoReaderDerivationTest.scala index e1ea2cc4..8c589193 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoReaderDerivationTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoReaderDerivationTest.scala @@ -5,7 +5,11 @@ import org.scalatest.flatspec.AnyFlatSpec import tethys.JsonReader import tethys.commons.TokenNode._ import tethys.commons.{Token, TokenNode} -import tethys.derivation.builder.{FieldStyle, ReaderBuilder, ReaderDerivationConfig} +import tethys.derivation.builder.{ + FieldStyle, + ReaderBuilder, + ReaderDerivationConfig +} import tethys.derivation.semiauto._ import tethys.readers.ReaderError import tethys.readers.tokens.QueueIterator @@ -19,22 +23,24 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { res } - behavior of "semiauto derivation" it should "derive readers for simple case class hierarchy" in { implicit val dReader: JsonReader[D] = jsonReader[D] implicit val cReader: JsonReader[C] = jsonReader[C] - implicit val jsonTreeTestDataReader: JsonReader[JsonTreeTestData] = jsonReader[JsonTreeTestData] - - read[JsonTreeTestData](obj( - "a" -> 1, - "b" -> true, - "c" -> obj( - "d" -> obj( - "a" -> 2 + implicit val jsonTreeTestDataReader: JsonReader[JsonTreeTestData] = + jsonReader[JsonTreeTestData] + + read[JsonTreeTestData]( + obj( + "a" -> 1, + "b" -> true, + "c" -> obj( + "d" -> obj( + "a" -> 2 + ) ) ) - )) shouldBe JsonTreeTestData( + ) shouldBe JsonTreeTestData( a = 1, b = true, c = C(D(2)) @@ -42,167 +48,212 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { } it should "derive reader for recursive type" in { - implicit lazy val recursiveReader: JsonReader[RecursiveType] = jsonReader[RecursiveType] - - read[RecursiveType](obj( - "a" -> 1, - "children" -> arr( - obj( - "a" -> 2, - "children" -> arr() - ), - obj( - "a" -> 3, - "children" -> arr() + implicit lazy val recursiveReader: JsonReader[RecursiveType] = + jsonReader[RecursiveType] + + read[RecursiveType]( + obj( + "a" -> 1, + "children" -> arr( + obj( + "a" -> 2, + "children" -> arr() + ), + obj( + "a" -> 3, + "children" -> arr() + ) ) ) - )) shouldBe RecursiveType(1, Seq(RecursiveType(2), RecursiveType(3))) + ) shouldBe RecursiveType(1, Seq(RecursiveType(2), RecursiveType(3))) } it should "derive reader for A => B => A cycle" in { - implicit lazy val testReader1: JsonReader[ComplexRecursionA] = jsonReader[ComplexRecursionA] - implicit lazy val testReader2: JsonReader[ComplexRecursionB] = jsonReader[ComplexRecursionB] - - read[ComplexRecursionA](obj( - "a" -> 1, - "b" -> obj( - "b" -> 2, - "a" -> obj( - "a" -> 3 + implicit lazy val testReader1: JsonReader[ComplexRecursionA] = + jsonReader[ComplexRecursionA] + implicit lazy val testReader2: JsonReader[ComplexRecursionB] = + jsonReader[ComplexRecursionB] + + read[ComplexRecursionA]( + obj( + "a" -> 1, + "b" -> obj( + "b" -> 2, + "a" -> obj( + "a" -> 3 + ) ) ) - )) shouldBe ComplexRecursionA(1, Some(ComplexRecursionB(2, ComplexRecursionA(3, None)))) + ) shouldBe ComplexRecursionA( + 1, + Some(ComplexRecursionB(2, ComplexRecursionA(3, None))) + ) } it should "derive reader for extract as description" in { implicit val reader: JsonReader[SimpleType] = jsonReader[SimpleType] { describe { ReaderBuilder[SimpleType] - .extract(_.i).as[Option[Int]](_.getOrElse(2)) + .extract(_.i) + .as[Option[Int]](_.getOrElse(2)) } } - read[SimpleType](obj( - "i" -> 1, - "s" -> "str", - "d" -> 1.0 - )) shouldBe SimpleType(1, "str", 1.0) + read[SimpleType]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 1.0 + ) + ) shouldBe SimpleType(1, "str", 1.0) - read[SimpleType](obj( - "s" -> "str", - "d" -> 1.0 - )) shouldBe SimpleType(2, "str", 1.0) + read[SimpleType]( + obj( + "s" -> "str", + "d" -> 1.0 + ) + ) shouldBe SimpleType(2, "str", 1.0) } it should "derive reader for extract from description" in { implicit val reader: JsonReader[SimpleType] = jsonReader[SimpleType] { describe { ReaderBuilder[SimpleType] - .extract(_.i).from(_.s, _.d)((s, d) => 2) + .extract(_.i) + .from(_.s, _.d)((s, d) => 2) } } - read[SimpleType](obj( - "i" -> 1, - "s" -> "str", - "d" -> 1.0 - )) shouldBe SimpleType(2, "str", 1.0) + read[SimpleType]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 1.0 + ) + ) shouldBe SimpleType(2, "str", 1.0) - read[SimpleType](obj( - "s" -> "str", - "d" -> 1.0 - )) shouldBe SimpleType(2, "str", 1.0) + read[SimpleType]( + obj( + "s" -> "str", + "d" -> 1.0 + ) + ) shouldBe SimpleType(2, "str", 1.0) } it should "derive reader for extract from description with synthetic field" in { implicit val reader: JsonReader[SimpleType] = jsonReader[SimpleType] { describe { ReaderBuilder[SimpleType] - .extract(_.i).from(_.d).and(Symbol("e").as[Double])((d, e) => (d + e).toInt) + .extract(_.i) + .from(_.d) + .and(Symbol("e").as[Double])((d, e) => (d + e).toInt) } } - read[SimpleType](obj( - "i" -> 1, - "s" -> "str", - "d" -> 1.0, - "e" -> 2.0 - )) shouldBe SimpleType(3, "str", 1.0) + read[SimpleType]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 1.0, + "e" -> 2.0 + ) + ) shouldBe SimpleType(3, "str", 1.0) - read[SimpleType](obj( - "s" -> "str", - "d" -> 1.0, - "e" -> 3.0 - )) shouldBe SimpleType(4, "str", 1.0) + read[SimpleType]( + obj( + "s" -> "str", + "d" -> 1.0, + "e" -> 3.0 + ) + ) shouldBe SimpleType(4, "str", 1.0) } it should "derive reader for extract reader from description" in { - implicit val reader: JsonReader[SimpleTypeWithAny] = jsonReader[SimpleTypeWithAny] { - describe { - ReaderBuilder[SimpleTypeWithAny] - .extractReader(_.any).from(_.d) { - case 1.0 => JsonReader[String] - case 2.0 => JsonReader[Int] + implicit val reader: JsonReader[SimpleTypeWithAny] = + jsonReader[SimpleTypeWithAny] { + describe { + ReaderBuilder[SimpleTypeWithAny] + .extractReader(_.any) + .from(_.d) { + case 1.0 => JsonReader[String] + case 2.0 => JsonReader[Int] + } } } - } - - read[SimpleTypeWithAny](obj( - "i" -> 1, - "s" -> "str", - "d" -> 1.0, - "any" -> "anyStr" - )) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") - read[SimpleTypeWithAny](obj( - "i" -> 1, - "s" -> "str", - "d" -> 2.0, - "any" -> 2 - )) shouldBe SimpleTypeWithAny(1, "str", 2.0, 2) + read[SimpleTypeWithAny]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 1.0, + "any" -> "anyStr" + ) + ) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") + + read[SimpleTypeWithAny]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 2.0, + "any" -> 2 + ) + ) shouldBe SimpleTypeWithAny(1, "str", 2.0, 2) } it should "derive reader for complex extraction case" in { - implicit val reader: JsonReader[SimpleTypeWithAny] = jsonReader[SimpleTypeWithAny] { - ReaderBuilder[SimpleTypeWithAny] - .extractReader(_.any).from(_.i) { - case 1 => JsonReader[String] - case 2 => JsonReader[Int] - case _ => JsonReader[Option[Boolean]] + implicit val reader: JsonReader[SimpleTypeWithAny] = + jsonReader[SimpleTypeWithAny] { + ReaderBuilder[SimpleTypeWithAny] + .extractReader(_.any) + .from(_.i) { + case 1 => JsonReader[String] + case 2 => JsonReader[Int] + case _ => JsonReader[Option[Boolean]] + } + .extract(_.i) + .from(_.d) + .and(Symbol("e").as[Int])((d, e) => d.toInt + e) + .extract(_.d) + .as[Option[Double]](_.getOrElse(1.0)) } - .extract(_.i).from(_.d).and(Symbol("e").as[Int])((d, e) => d.toInt + e) - .extract(_.d).as[Option[Double]](_.getOrElse(1.0)) - } - read[SimpleTypeWithAny](obj( - "s" -> "str", - "d" -> 1.0, - "e" -> 0, - "any" -> "anyStr" - )) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") - - read[SimpleTypeWithAny](obj( - "s" -> "str", - "e" -> 0, - "any" -> "anyStr" - )) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") - - read[SimpleTypeWithAny](obj( - "s" -> "str", - "d" -> 1.0, - "e" -> 1, - "any" -> 3 - )) shouldBe SimpleTypeWithAny(2, "str", 1.0, 3) + read[SimpleTypeWithAny]( + obj( + "s" -> "str", + "d" -> 1.0, + "e" -> 0, + "any" -> "anyStr" + ) + ) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") - read[SimpleTypeWithAny](obj( - "s" -> "str", - "d" -> 1.0, - "e" -> 2, - "any" -> true - )) shouldBe SimpleTypeWithAny(3, "str", 1.0, Some(true)) + read[SimpleTypeWithAny]( + obj( + "s" -> "str", + "e" -> 0, + "any" -> "anyStr" + ) + ) shouldBe SimpleTypeWithAny(1, "str", 1.0, "anyStr") + + read[SimpleTypeWithAny]( + obj( + "s" -> "str", + "d" -> 1.0, + "e" -> 1, + "any" -> 3 + ) + ) shouldBe SimpleTypeWithAny(2, "str", 1.0, 3) + + read[SimpleTypeWithAny]( + obj( + "s" -> "str", + "d" -> 1.0, + "e" -> 2, + "any" -> true + ) + ) shouldBe SimpleTypeWithAny(3, "str", 1.0, Some(true)) - //FIXME: figure out how to handle this case + // FIXME: figure out how to handle this case /*read[SimpleTypeWithAny](obj( "s" -> "str", "d" -> 1.0, @@ -211,16 +262,19 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { } it should "derive reader for fieldStyle from description" in { - implicit val reader: JsonReader[CamelCaseNames] = jsonReader[CamelCaseNames] { - ReaderBuilder[CamelCaseNames] - .fieldStyle(FieldStyle.lowerSnakecase) - } + implicit val reader: JsonReader[CamelCaseNames] = + jsonReader[CamelCaseNames] { + ReaderBuilder[CamelCaseNames] + .fieldStyle(FieldStyle.lowerSnakecase) + } - read[CamelCaseNames](obj( - "some_param" -> 1, - "id_param" -> 2, - "simple" -> 3 - )) shouldBe CamelCaseNames( + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "id_param" -> 2, + "simple" -> 3 + ) + ) shouldBe CamelCaseNames( someParam = 1, IDParam = 2, simple = 3 @@ -228,16 +282,19 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { } it should "derive reader for fieldStyle from function in description" in { - implicit val reader: JsonReader[CamelCaseNames] = jsonReader[CamelCaseNames] { - ReaderBuilder[CamelCaseNames] - .fieldStyle(FieldStyle(_.capitalize)) - } + implicit val reader: JsonReader[CamelCaseNames] = + jsonReader[CamelCaseNames] { + ReaderBuilder[CamelCaseNames] + .fieldStyle(FieldStyle(_.capitalize)) + } - read[CamelCaseNames](obj( - "SomeParam" -> 1, - "IDParam" -> 2, - "Simple" -> 3 - )) shouldBe CamelCaseNames( + read[CamelCaseNames]( + obj( + "SomeParam" -> 1, + "IDParam" -> 2, + "Simple" -> 3 + ) + ) shouldBe CamelCaseNames( someParam = 1, IDParam = 2, simple = 3 @@ -248,96 +305,118 @@ class SemiautoReaderDerivationTest extends AnyFlatSpec with Matchers { implicit val reader: JsonReader[SimpleType] = jsonReader[SimpleType] { describe { ReaderBuilder[SimpleType] - .extract(_.i).from("i".as[Int])(identity) + .extract(_.i) + .from("i".as[Int])(identity) } } - read[SimpleType](obj( - "i" -> 1, - "s" -> "str", - "d" -> 1.0 - )) shouldBe SimpleType(1, "str", 1.0) + read[SimpleType]( + obj( + "i" -> 1, + "s" -> "str", + "d" -> 1.0 + ) + ) shouldBe SimpleType(1, "str", 1.0) } it should "derive reader for extract field even it described few times" in { implicit val reader: JsonReader[SimpleType] = jsonReader[SimpleType] { describe { ReaderBuilder[SimpleType] - .extract(_.i).from("i".as[Int])(identity) - .extract(_.s).from("i".as[Long])(_.toString) - .extract(_.d).from(_.i)(_.toDouble) + .extract(_.i) + .from("i".as[Int])(identity) + .extract(_.s) + .from("i".as[Long])(_.toString) + .extract(_.d) + .from(_.i)(_.toDouble) } } - read[SimpleType](obj( - "i" -> 1 - )) shouldBe SimpleType(1, "1", 1.0) + read[SimpleType]( + obj( + "i" -> 1 + ) + ) shouldBe SimpleType(1, "1", 1.0) } it should "derive reader for reader config" in { - implicit val reader: JsonReader[CamelCaseNames] = jsonReader[CamelCaseNames]( - ReaderDerivationConfig.withFieldStyle(FieldStyle.lowerSnakecase).strict - ) + implicit val reader: JsonReader[CamelCaseNames] = + jsonReader[CamelCaseNames]( + ReaderDerivationConfig.withFieldStyle(FieldStyle.lowerSnakecase).strict + ) - read[CamelCaseNames](obj( - "some_param" -> 1, - "id_param" -> 2, - "simple" -> 3 - )) shouldBe CamelCaseNames( + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "id_param" -> 2, + "simple" -> 3 + ) + ) shouldBe CamelCaseNames( someParam = 1, IDParam = 2, simple = 3 ) the[ReaderError] thrownBy { - read[CamelCaseNames](obj( - "some_param" -> 1, - "not_id_param" -> 2, - "simple" -> 3 - )) + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "not_id_param" -> 2, + "simple" -> 3 + ) + ) } should have message "Illegal json at '[ROOT]': unexpected field 'not_id_param', expected one of 'some_param', 'id_param', 'simple'" } it should "derive reader for reader config from builder" in { - implicit val reader: JsonReader[CamelCaseNames] = jsonReader[CamelCaseNames]( - ReaderBuilder[CamelCaseNames] - .strict - .fieldStyle(FieldStyle.lowerSnakecase) - ) + implicit val reader: JsonReader[CamelCaseNames] = + jsonReader[CamelCaseNames]( + ReaderBuilder[CamelCaseNames].strict + .fieldStyle(FieldStyle.lowerSnakecase) + ) - read[CamelCaseNames](obj( - "some_param" -> 1, - "id_param" -> 2, - "simple" -> 3 - )) shouldBe CamelCaseNames( + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "id_param" -> 2, + "simple" -> 3 + ) + ) shouldBe CamelCaseNames( someParam = 1, IDParam = 2, simple = 3 ) the[ReaderError] thrownBy { - read[CamelCaseNames](obj( - "some_param" -> 1, - "not_id_param" -> 2, - "simple" -> 3 - )) + read[CamelCaseNames]( + obj( + "some_param" -> 1, + "not_id_param" -> 2, + "simple" -> 3 + ) + ) } should have message "Illegal json at '[ROOT]': unexpected field 'not_id_param', expected one of 'some_param', 'id_param', 'simple'" } - + it should "derive reader for class with default params" in { - implicit val reader: JsonReader[DefaultField[Int]] = jsonReader[DefaultField[Int]] + implicit val reader: JsonReader[DefaultField[Int]] = + jsonReader[DefaultField[Int]] - read[DefaultField[Int]](obj( - "value" -> 1, - "default" -> false - )) shouldBe DefaultField[Int]( + read[DefaultField[Int]]( + obj( + "value" -> 1, + "default" -> false + ) + ) shouldBe DefaultField[Int]( value = 1, default = false ) - read[DefaultField[Int]](obj( - "value" -> 1, - )) shouldBe DefaultField[Int]( + read[DefaultField[Int]]( + obj( + "value" -> 1 + ) + ) shouldBe DefaultField[Int]( value = 1, default = true ) diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoWriterDerivationTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoWriterDerivationTest.scala index fa36e292..a23d130b 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoWriterDerivationTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/SemiautoWriterDerivationTest.scala @@ -4,7 +4,11 @@ import org.scalatest.matchers.should.Matchers import org.scalatest.flatspec.AnyFlatSpec import tethys.commons.TokenNode import tethys.{JsonObjectWriter, JsonWriter} -import tethys.derivation.builder.{FieldStyle, WriterBuilder, WriterDerivationConfig} +import tethys.derivation.builder.{ + FieldStyle, + WriterBuilder, + WriterDerivationConfig +} import tethys.writers.tokens.SimpleTokenWriter._ import tethys.commons.TokenNode._ import tethys.derivation.ADTWithType.{ADTWithTypeA, ADTWithTypeB} @@ -17,12 +21,14 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { it should "generate proper writer from WriterDescription" in { def freeVariable: String = "e" - implicit val dWriter: JsonWriter[D] = jsonWriter[D](WriterDerivationConfig.withFieldStyle(FieldStyle.uppercase)) + implicit val dWriter: JsonWriter[D] = + jsonWriter[D](WriterDerivationConfig.withFieldStyle(FieldStyle.uppercase)) implicit val testWriter: JsonWriter[JsonTreeTestData] = jsonWriter { WriterBuilder[JsonTreeTestData] .remove(_.b) - .update(_.a).fromRoot(d => d.a.toDouble + d.c.d.a) + .update(_.a) + .fromRoot(d => d.a.toDouble + d.c.d.a) .update(_.c)(_.d) .add("d")(_.a * 2) .add(freeVariable)(_.b) @@ -42,8 +48,8 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { describe { WriterBuilder[D] .updatePartial(_.a) { - case 1 => "uno!" - case 2 => 1 + case 1 => "uno!" + case 2 => 1 case v if v > 0 => v * 2 case _ => throw new IllegalArgumentException("Wrong value!") } @@ -63,12 +69,13 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { implicit val partialWriter: JsonWriter[D] = jsonWriter { describe { WriterBuilder[D] - .updatePartial(_.a).fromRoot { - case d if d.a == 1 => "uno!" - case d if d.a == 2 => 1 - case d if d.a > 0 => d.a * 2 - case _ => throw new IllegalArgumentException("Wrong value!") - } + .updatePartial(_.a) + .fromRoot { + case d if d.a == 1 => "uno!" + case d if d.a == 2 => 1 + case d if d.a > 0 => d.a * 2 + case _ => throw new IllegalArgumentException("Wrong value!") + } } } @@ -86,7 +93,8 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer for recursive type" in { - implicit lazy val testWriter: JsonWriter[RecursiveType] = jsonWriter[RecursiveType] + implicit lazy val testWriter: JsonWriter[RecursiveType] = + jsonWriter[RecursiveType] RecursiveType(1, Seq(RecursiveType(2))).asTokenList shouldBe obj( "a" -> 1, @@ -100,10 +108,15 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer for A => B => A cycle" in { - implicit lazy val testWriter1: JsonWriter[ComplexRecursionA] = jsonWriter[ComplexRecursionA] - implicit lazy val testWriter2: JsonWriter[ComplexRecursionB] = jsonWriter[ComplexRecursionB] - - ComplexRecursionA(1, Some(ComplexRecursionB(2, ComplexRecursionA(3, None)))).asTokenList shouldBe obj( + implicit lazy val testWriter1: JsonWriter[ComplexRecursionA] = + jsonWriter[ComplexRecursionA] + implicit lazy val testWriter2: JsonWriter[ComplexRecursionB] = + jsonWriter[ComplexRecursionB] + + ComplexRecursionA( + 1, + Some(ComplexRecursionB(2, ComplexRecursionA(3, None))) + ).asTokenList shouldBe obj( "a" -> 1, "b" -> obj( "b" -> 2, @@ -115,13 +128,18 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer for sealed cyclic trait with type parameter" in { - implicit def recursionTraitWithTypeWriter[B: JsonWriter]: JsonObjectWriter[ADTWithType[B]] = jsonWriter[ADTWithType[B]] + implicit def recursionTraitWithTypeWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithType[B]] = jsonWriter[ADTWithType[B]] - implicit def recursionTraitWithTypeAWriter[B: JsonWriter]: JsonObjectWriter[ADTWithTypeA[B]] = jsonWriter[ADTWithTypeA[B]] + implicit def recursionTraitWithTypeAWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithTypeA[B]] = jsonWriter[ADTWithTypeA[B]] - implicit def recursionTraitWithTypeBWriter[B: JsonWriter]: JsonObjectWriter[ADTWithTypeB[B]] = jsonWriter[ADTWithTypeB[B]] + implicit def recursionTraitWithTypeBWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithTypeB[B]] = jsonWriter[ADTWithTypeB[B]] - (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[Int]).asTokenList shouldBe obj( + (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[ + Int + ]).asTokenList shouldBe obj( "a" -> 1, "b" -> obj( "a" -> 2 @@ -130,19 +148,25 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer that normally concatenates with other JsonWriter's" in { - implicit def recursionTraitWithTypeWriter[B: JsonWriter]: JsonWriter[ADTWithType[B]] = { - val simpleJsonWriter = SimpleJsonObjectWriter[ADTWithType[B]].addField("clazz") { - case _: ADTWithTypeA[B] => "ADTWithTypeA" - case _: ADTWithTypeB[B] => "ADTWithTypeB" - } + implicit def recursionTraitWithTypeWriter[B: JsonWriter] + : JsonWriter[ADTWithType[B]] = { + val simpleJsonWriter = + SimpleJsonObjectWriter[ADTWithType[B]].addField("clazz") { + case _: ADTWithTypeA[B] => "ADTWithTypeA" + case _: ADTWithTypeB[B] => "ADTWithTypeB" + } simpleJsonWriter ++ jsonWriter[ADTWithType[B]] } - implicit def recursionTraitWithTypeAWriter[B: JsonWriter]: JsonObjectWriter[ADTWithTypeA[B]] = jsonWriter[ADTWithTypeA[B]] + implicit def recursionTraitWithTypeAWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithTypeA[B]] = jsonWriter[ADTWithTypeA[B]] - implicit def recursionTraitWithTypeBWriter[B: JsonWriter]: JsonObjectWriter[ADTWithTypeB[B]] = jsonWriter[ADTWithTypeB[B]] + implicit def recursionTraitWithTypeBWriter[B: JsonWriter] + : JsonObjectWriter[ADTWithTypeB[B]] = jsonWriter[ADTWithTypeB[B]] - (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[Int]).asTokenList shouldBe obj( + (ADTWithTypeB[Int](1, ADTWithTypeA[Int](2)): ADTWithType[ + Int + ]).asTokenList shouldBe obj( "clazz" -> "ADTWithTypeB", "a" -> 1, "b" -> obj( @@ -161,14 +185,20 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer for simple sealed trait with hierarchy" in { - implicit val caseClassWriter: JsonObjectWriter[CaseClass] = jsonWriter[CaseClass] - implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = JsonWriter.obj[SimpleClass].addField("b")(_.b) - implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = JsonWriter.obj.addField("type")(_ => "JustObject") - implicit val subChildWriter: JsonObjectWriter[SubChild] = jsonWriter[SubChild] + implicit val caseClassWriter: JsonObjectWriter[CaseClass] = + jsonWriter[CaseClass] + implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = + JsonWriter.obj[SimpleClass].addField("b")(_.b) + implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = + JsonWriter.obj.addField("type")(_ => "JustObject") + implicit val subChildWriter: JsonObjectWriter[SubChild] = + jsonWriter[SubChild] - implicit val sealedWriter: JsonWriter[SimpleSealedType] = jsonWriter[SimpleSealedType] + implicit val sealedWriter: JsonWriter[SimpleSealedType] = + jsonWriter[SimpleSealedType] - def write(simpleSealedType: SimpleSealedType): List[TokenNode] = simpleSealedType.asTokenList + def write(simpleSealedType: SimpleSealedType): List[TokenNode] = + simpleSealedType.asTokenList write(CaseClass(1)) shouldBe obj("a" -> 1) write(new SimpleClass(2)) shouldBe obj("b" -> 2) @@ -177,16 +207,22 @@ class SemiautoWriterDerivationTest extends AnyFlatSpec with Matchers { } it should "derive writer for simple sealed trait with hierarchy with discriminator" in { - implicit val caseClassWriter: JsonObjectWriter[CaseClass] = jsonWriter[CaseClass] - implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = JsonWriter.obj[SimpleClass].addField("b")(_.b) - implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = JsonWriter.obj - implicit val subChildWriter: JsonObjectWriter[SubChild] = jsonWriter[SubChild] - - implicit val sealedWriter: JsonWriter[SimpleSealedType] = jsonWriter[SimpleSealedType]( - WriterDerivationConfig.empty.withDiscriminator("__type") - ) + implicit val caseClassWriter: JsonObjectWriter[CaseClass] = + jsonWriter[CaseClass] + implicit val simpleClassWriter: JsonObjectWriter[SimpleClass] = + JsonWriter.obj[SimpleClass].addField("b")(_.b) + implicit val justObjectWriter: JsonObjectWriter[JustObject.type] = + JsonWriter.obj + implicit val subChildWriter: JsonObjectWriter[SubChild] = + jsonWriter[SubChild] + + implicit val sealedWriter: JsonWriter[SimpleSealedType] = + jsonWriter[SimpleSealedType]( + WriterDerivationConfig.empty.withDiscriminator("__type") + ) - def write(simpleSealedType: SimpleSealedType): List[TokenNode] = simpleSealedType.asTokenList + def write(simpleSealedType: SimpleSealedType): List[TokenNode] = + simpleSealedType.asTokenList write(CaseClass(1)) shouldBe obj("a" -> 1, "__type" -> "CaseClass") write(new SimpleClass(2)) shouldBe obj("b" -> 2, "__type" -> "SimpleClass") diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/WriterRenamingSyntaxTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/WriterRenamingSyntaxTest.scala index 97339f1e..e66a8fc6 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/WriterRenamingSyntaxTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/WriterRenamingSyntaxTest.scala @@ -27,7 +27,8 @@ class WriterRenamingSyntaxTest extends AnyFlatSpec with Matchers { implicit val writer: JsonWriter[D] = jsonWriter[D] { describe { WriterBuilder[D] - .update(_.a).withRename("b")(_.toString) + .update(_.a) + .withRename("b")(_.toString) } } @@ -40,7 +41,8 @@ class WriterRenamingSyntaxTest extends AnyFlatSpec with Matchers { def freeVariableRenaming(name: String): JsonWriter[D] = jsonWriter[D] { describe { WriterBuilder[D] - .update(_.a).withRename(name)(_.toString) + .update(_.a) + .withRename(name)(_.toString) } } @@ -57,7 +59,9 @@ class WriterRenamingSyntaxTest extends AnyFlatSpec with Matchers { implicit val writer: JsonWriter[D] = jsonWriter[D] { describe { WriterBuilder[D] - .update(_.a).withRename("b").fromRoot(d => d.a * 2) + .update(_.a) + .withRename("b") + .fromRoot(d => d.a * 2) } } diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/ReaderDescriptionTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/ReaderDescriptionTest.scala index 698c0ac8..13082e01 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/ReaderDescriptionTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/ReaderDescriptionTest.scala @@ -11,11 +11,16 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { behavior of "describe" it should "build empty description from empty builder" in { - describe(ReaderBuilder[Foo]) shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq()) + describe(ReaderBuilder[Foo]) shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq() + ) } it should "build description with config" in { - describe(ReaderBuilder[Foo].fieldStyle(FieldStyle.uppercase).strict) shouldBe ReaderDescription[Foo]( + describe( + ReaderBuilder[Foo].fieldStyle(FieldStyle.uppercase).strict + ) shouldBe ReaderDescription[Foo]( ReaderDerivationConfig.withFieldStyle(FieldStyle.uppercase).strict, Seq() ) @@ -26,12 +31,16 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).as[Option[Int]](fun) + .extract(_.a) + .as[Option[Int]](fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldAs("a", fun) - )) + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldAs("a", fun) + ) + ) } it should "build description for ExtractFieldValue operation from lambdas" in { @@ -39,19 +48,23 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(_.b, _.c)(fun) + .extract(_.a) + .from(_.b, _.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldValue operation from ReaderField's" in { @@ -59,19 +72,23 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(Symbol("b").as[String], "c".as[Any])(fun) + .extract(_.a) + .from(Symbol("b").as[String], "c".as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldValue operation from lambdas and lambdas" in { @@ -79,19 +96,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(_.b).and(_.c)(fun) + .extract(_.a) + .from(_.b) + .and(_.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldValue operation from lambdas and ReaderField's" in { @@ -99,19 +121,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(_.b).and(Symbol("c").as[Any])(fun) + .extract(_.a) + .from(_.b) + .and(Symbol("c").as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldValue operation from ReaderField's and lambdas" in { @@ -119,19 +146,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(Symbol("b").as[String]).and(_.c)(fun) + .extract(_.a) + .from(Symbol("b").as[String]) + .and(_.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldValue operation from ReaderField's and ReaderField's" in { @@ -139,19 +171,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extract(_.a).from(Symbol("b").as[String]).and(Symbol("c").as[Any])(fun) + .extract(_.a) + .from(Symbol("b").as[String]) + .and(Symbol("c").as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldValue( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldValue( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from lambdas" in { @@ -159,19 +196,23 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(_.b, _.c)(fun) + .extractReader(_.a) + .from(_.b, _.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from ReaderField's" in { @@ -179,19 +220,23 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(Symbol("b").as[String], "c".as[Any])(fun) + .extractReader(_.a) + .from(Symbol("b").as[String], "c".as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from lambdas and lambdas" in { @@ -199,19 +244,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(_.b).and(_.c)(fun) + .extractReader(_.a) + .from(_.b) + .and(_.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from lambdas and ReaderField's" in { @@ -219,19 +269,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(_.b).and(Symbol("c").as[Any])(fun) + .extractReader(_.a) + .from(_.b) + .and(Symbol("c").as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.ClassField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.ClassField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from ReaderField's and lambdas" in { @@ -239,19 +294,24 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(Symbol("b").as[String]).and(_.c)(fun) + .extractReader(_.a) + .from(Symbol("b").as[String]) + .and(_.c)(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.ClassField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.ClassField[Any]("c") + ), + fun = fun + ) ) - )) + ) } it should "build description for ExtractFieldReader operation from ReaderField's and ReaderField's" in { @@ -259,22 +319,26 @@ class ReaderDescriptionTest extends AnyFlatSpec with Matchers { val description = describe { ReaderBuilder[Foo] - .extractReader(_.a).from(Symbol("b").as[String]).and(Symbol("c").as[Any])(fun) + .extractReader(_.a) + .from(Symbol("b").as[String]) + .and(Symbol("c").as[Any])(fun) } - description shouldBe ReaderDescription[Foo](ReaderDerivationConfig.empty, Seq( - ReaderDescription.BuilderOperation.ExtractFieldReader( - field = "a", - from = Seq( - ReaderDescription.Field.RawField[String]("b"), - ReaderDescription.Field.RawField[Any]("c") - ), - fun = fun + description shouldBe ReaderDescription[Foo]( + ReaderDerivationConfig.empty, + Seq( + ReaderDescription.BuilderOperation.ExtractFieldReader( + field = "a", + from = Seq( + ReaderDescription.Field.RawField[String]("b"), + ReaderDescription.Field.RawField[Any]("c") + ), + fun = fun + ) ) - )) + ) } - } object ReaderDescriptionTest { diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/WriterDescriptionTest.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/WriterDescriptionTest.scala index cc675211..9203bb4a 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/WriterDescriptionTest.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/builder/WriterDescriptionTest.scala @@ -24,10 +24,13 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { WriterBuilder[BuilderTestData] .remove(_.a) .remove(_.inner) - } shouldBe WriterDescription(WriterDerivationConfig.empty, Seq( - BuilderOperation.Remove[BuilderTestData]("a"), - BuilderOperation.Remove[BuilderTestData]("inner") - )) + } shouldBe WriterDescription( + WriterDerivationConfig.empty, + Seq( + BuilderOperation.Remove[BuilderTestData]("a"), + BuilderOperation.Remove[BuilderTestData]("inner") + ) + ) } it should "not compile if we try to remove field from inner class" in { @@ -46,7 +49,8 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { .update(_.a)(_.toString) } - val Seq(u: BuilderOperation.Update[BuilderTestData, Int, String]) = description.operations + val Seq(u: BuilderOperation.Update[BuilderTestData, Int, String]) = + description.operations u.field shouldBe "a" u.fun(1) shouldBe "1" @@ -55,10 +59,12 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { it should "extract update from root operations" in { val description = describe { WriterBuilder[BuilderTestData] - .update(_.a).fromRoot(_.a.toString) + .update(_.a) + .fromRoot(_.a.toString) } - val Seq(u: BuilderOperation.UpdateFromRoot[BuilderTestData, String]) = description.operations + val Seq(u: BuilderOperation.UpdateFromRoot[BuilderTestData, String]) = + description.operations u.field shouldBe "a" u.fun(BuilderTestData(1, "s", c = true, 1L, InnerCls(2))) shouldBe "1" @@ -74,7 +80,8 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { } } - val Seq(up: BuilderOperation.UpdatePartial[BuilderTestData, Int]) = description.operations + val Seq(up: BuilderOperation.UpdatePartial[BuilderTestData, Int]) = + description.operations up.field shouldBe "a" up.fun(1) shouldBe "uno!" @@ -85,14 +92,16 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { it should "extract update partial from root operations" in { val description = describe { WriterBuilder[BuilderTestData] - .updatePartial(_.a).fromRoot { - case d if d.a == 1 => "uno!" - case d if d.a == 2 => 4 - case d => d.a * 3 - } + .updatePartial(_.a) + .fromRoot { + case d if d.a == 1 => "uno!" + case d if d.a == 2 => 4 + case d => d.a * 3 + } } - val Seq(up: BuilderOperation.UpdatePartialFromRoot[BuilderTestData]) = description.operations + val Seq(up: BuilderOperation.UpdatePartialFromRoot[BuilderTestData]) = + description.operations up.field shouldBe "a" @@ -118,19 +127,24 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { operations(1) shouldBe a[BuilderOperation.Update[_, _, _]] - val u = operations(1).asInstanceOf[BuilderOperation.Update[BuilderTestData, Boolean, Boolean]] + val u = operations(1) + .asInstanceOf[BuilderOperation.Update[BuilderTestData, Boolean, Boolean]] u.field shouldBe "c" u.fun(true) shouldBe false operations(2) shouldBe a[BuilderOperation.Add[_, _]] - val add = operations(2).asInstanceOf[BuilderOperation.Add[BuilderTestData, Int]] + val add = + operations(2).asInstanceOf[BuilderOperation.Add[BuilderTestData, Int]] add.field shouldBe "e" add.fun(testData) shouldBe 2 } it should "extract rename" in { - val WriterDescription(_, Seq(op: BuilderOperation.Update[BuilderTestData, Int, Int])) = describe { + val WriterDescription( + _, + Seq(op: BuilderOperation.Update[BuilderTestData, Int, Int]) + ) = describe { WriterBuilder[BuilderTestData].rename(_.a)("aa") } @@ -150,8 +164,8 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { } it should "extract update from root with rename" in { - val fun: PartialFunction[BuilderTestData, Int] = { - case d => d.a + val fun: PartialFunction[BuilderTestData, Int] = { case d => + d.a } describe { @@ -164,10 +178,14 @@ class WriterDescriptionTest extends AnyFlatSpec with Matchers { object WriterDescriptionTest { - case class BuilderTestData(a: Int, b: String, c: Boolean, d: Long, inner: InnerCls) + case class BuilderTestData( + a: Int, + b: String, + c: Boolean, + d: Long, + inner: InnerCls + ) case class InnerCls(a: Int) } - - diff --git a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/package.scala b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/package.scala index 7488301f..f70f66db 100644 --- a/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/package.scala +++ b/modules/macro-derivation/src/test/scala-2.13+/tethys/derivation/package.scala @@ -8,7 +8,6 @@ package object derivation { case class C(d: D) case class D(a: Int) - case class RecursiveType(a: Int, children: Seq[RecursiveType] = Seq.empty) case class ComplexRecursionA(a: Int, b: Option[ComplexRecursionB]) From 8685ef9b0bac642bf8f6e02bb08f454a68da29e7 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Thu, 29 Aug 2024 19:18:06 +0000 Subject: [PATCH 3/3] Add 'Reformat with scalafmt 3.7.17' to .git-blame-ignore-revs --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .git-blame-ignore-revs diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 00000000..b10b452b --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Scala Steward: Reformat with scalafmt 3.7.17 +0a87fd464d9a29429865dbdab50ebb982419a9d4