1 /***********************************************************************
2  * Copyright (c) 2013-2024 Commonwealth Computer Research, Inc.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Apache License, Version 2.0
5  * which accompanies this distribution and is available at
6  * http://www.opensource.org/licenses/apache2.0.php.
7  ***********************************************************************/
8 
9 package org.locationtech.geomesa.fs.storage.common
10 
11 import com.typesafe.config.{Config, ConfigRenderOptions, ConfigValue, ConfigValueFactory}
12 import org.geotools.api.feature.simple.SimpleFeatureType
13 import org.locationtech.geomesa.fs.storage.api.StorageMetadata.{PartitionBounds, PartitionMetadata, StorageFile, StorageFileAction}
14 import org.locationtech.geomesa.fs.storage.common.metadata.PartitionAction.PartitionAction
15 import org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes
16 import org.locationtech.jts.geom.Envelope
17 import pureconfig.ConfigReader.Result
18 import pureconfig._
19 import pureconfig.error.{CannotConvert, ConfigReaderFailures}
20 
21 import java.util.Collections
22 import scala.reflect.ClassTag
23 
24 package object metadata {
25 
26   import scala.collection.JavaConverters._
27 
28   /**
29     * Creates a new simple feature type with the namespace in the simple feature type name
30     *
31     * @param sft simple feature type
32     * @param namespace optional namespace
33     * @return
34     */
35   def namespaced(sft: SimpleFeatureType, namespace: Option[String]): SimpleFeatureType =
36     namespace.map(ns => SimpleFeatureTypes.renameSft(sft, s"$ns:${sft.getTypeName}")).getOrElse(sft)
37 
38   /**
39     * Merge configs for a single partition into a single aggregate config
40     *
41     * @param configs updates for a given partition
42     * @return
43     */
44   def mergePartitionConfigs(configs: Seq[PartitionConfig]): Option[PartitionConfig] = {
45     configs.sortBy(_.timestamp).dropWhile(_.action != PartitionAction.Add).reduceLeftOption { (result, update) =>
46       update.action match {
47         case PartitionAction.Add    => result + update
48         case PartitionAction.Remove => result - update
49       }
50     }
51   }
52 
53   // case classes for serializing to disk
54 
55   case class CompactedConfig(partitions: Seq[PartitionConfig])
56 
57   case class PartitionConfig(
58       name: String,
59       action: PartitionAction,
60       files: Seq[StorageFile],
61       count: Long,
62       envelope: Seq[Double],
63       timestamp: Long) {
64 
65     def +(other: PartitionConfig): PartitionConfig = {
66       require(action == PartitionAction.Add, "Can't aggregate into non-add actions")
67       val ts = math.max(timestamp, other.timestamp)
68       val env = if (envelope.isEmpty) { other.envelope } else if (other.envelope.isEmpty) { envelope } else {
69         val Seq(xmin1, ymin1, xmax1, ymax1) = envelope
70         val Seq(xmin2, ymin2, xmax2, ymax2) = other.envelope
71         Seq(math.min(xmin1, xmin2), math.min(ymin1, ymin2), math.max(xmax1, xmax2), math.max(ymax1, ymax2))
72       }
73       PartitionConfig(name, action, files ++ other.files, count + other.count, env, ts)
74     }
75 
76     def -(other: PartitionConfig): PartitionConfig = {
77       require(action == PartitionAction.Add, "Can't aggregate into non-add actions")
78       val ts = math.max(timestamp, other.timestamp)
79       val names = scala.collection.mutable.Map.empty[String, Int].withDefault(_ => 0)
80       other.files.foreach(f => names(f.name) += 1)
81       // keep oldest files if there are duplicates
82       val fs = files.sortBy(_.timestamp)(Ordering.Long.reverse).filter { f =>
83         names(f.name) match {
84           case 0 => true
85           case i => names.put(f.name, i - 1); false
86         }
87       }
88       PartitionConfig(name, action, fs, math.max(0, count - other.count), envelope, ts)
89     }
90 
91     def toMetadata: PartitionMetadata = {
92       val bounds = envelope match {
93         case Nil => None
94         case Seq(xmin, ymin, xmax, ymax) => Some(PartitionBounds(xmin, ymin, xmax, ymax))
95         case _ => throw new IllegalStateException(s"Invalid envelope: $envelope")
96       }
97       PartitionMetadata(name, files, bounds, count)
98     }
99   }
100 
101   object PartitionAction extends Enumeration {
102     type PartitionAction = Value
103     val Add, Remove, Clear = Value
104   }
105 
106   object EnvelopeConfig {
107     def apply(env: Envelope): Seq[Double] =
108       if (env == null || env.isNull) { Seq.empty } else { Seq(env.getMinX, env.getMinY, env.getMaxX, env.getMaxY) }
109   }
110 
111   // pureconfig converters for our case classes
112 
113   // noinspection ForwardReference
114   sealed trait MetadataConverter {
115 
116     def name: String
117     def suffix: String
118 
119     protected def partitionWriter: ConfigWriter[PartitionConfig]
120     protected def compactedWriter: ConfigWriter[CompactedConfig]
121     protected def options: ConfigRenderOptions
122 
123     private val partitionCt = ClassTag[PartitionConfig](classOf[PartitionConfig])
124     private val compactedCt = ClassTag[CompactedConfig](classOf[CompactedConfig])
125 
126     def renderPartition(partition: PartitionConfig): String =
127       partitionWriter.to(partition).render(options)
128     def parsePartition(config: Config): PartitionConfig =
129       ConfigSource.fromConfig(config).loadOrThrow[PartitionConfig](partitionCt, PartitionReader)
130 
131     def renderCompaction(compaction: Seq[PartitionConfig]): String =
132       compactedWriter.to(CompactedConfig(compaction)).render(options)
133     def parseCompaction(config: Config): Seq[PartitionConfig] =
134       ConfigSource.fromConfig(config).loadOrThrow[CompactedConfig](compactedCt, CompactedReader).partitions
135   }
136 
137   object MetadataConverter {
138 
139     private val options = Seq(RenderCompact, RenderPretty)
140 
141     def apply(name: String): MetadataConverter = {
142       options.find(_.name.equalsIgnoreCase(name)).getOrElse {
143         throw new IllegalArgumentException(
144           s"Render type '$name' does not exist. Available types: ${options.map(_.name).mkString(", ")}")
145       }
146     }
147   }
148 
149   object RenderPretty extends MetadataConverter {
150     override val name: String = FileBasedMetadata.Config.RenderPretty
151     override val suffix: String = ".json"
152     override protected val partitionWriter: ConfigWriter[PartitionConfig] =
153       ConfigWriter.fromFunction(writePartitionConfigVerbose)
154     override protected val compactedWriter: ConfigWriter[CompactedConfig] =
155       ConfigWriter.fromFunction(writeCompactedConfig(partitionWriter))
156     override protected val options: ConfigRenderOptions = ConfigRenderOptions.concise().setFormatted(true)
157   }
158 
159   object RenderCompact extends MetadataConverter {
160     override val name: String = FileBasedMetadata.Config.RenderCompact
161     override val suffix: String = ".conf"
162     override protected val partitionWriter: ConfigWriter[PartitionConfig] =
163       ConfigWriter.fromFunction(writePartitionConfigCompact)
164     override protected val compactedWriter: ConfigWriter[CompactedConfig] =
165       ConfigWriter.fromFunction(writeCompactedConfig(partitionWriter))
166     override protected val options: ConfigRenderOptions = ConfigRenderOptions.concise().setJson(false)
167   }
168 
169   class EnumerationReader[T <: Enumeration](enum: T) extends ConfigReader[T#Value] {
170     override def from(cur: ConfigCursor): Result[T#Value] = {
171       cur.asString.right.flatMap { s =>
172         lazy val reason =
173           CannotConvert(s, enum.getClass.getName, s"value $s is not a valid enum: ${enum.values.mkString(", ")}")
174         enum.values.find(_.toString.startsWith(s)).asInstanceOf[Option[T#Value]].toRight(cur.failed(reason).left.get)
175       }
176     }
177   }
178 
179   private val PartitionReader = ConfigReader.fromCursor(readPartitionConfig)
180   private val CompactedReader = ConfigReader.fromCursor(readCompactedConfig)
181   private val StorageFileCompactReader = ConfigReader.fromCursor(readStorageFileCompact)
182   private val StorageFileVerboseReader = ConfigReader.fromCursor(readStorageFileVerbose)
183   private val BoundReader = ConfigReader.fromCursor(readBound)
184   private val PartitionActionReader = new EnumerationReader(PartitionAction)
185   private val StorageFileActionReader = new EnumerationReader(StorageFileAction)
186 
187   private def writeCompactedConfig(delegate: ConfigWriter[PartitionConfig])(compacted: CompactedConfig): ConfigValue =
188     ConfigValueFactory.fromMap(Collections.singletonMap("partitions", compacted.partitions.map(delegate.to).asJava))
189 
190   private def readCompactedConfig(cur: ConfigCursor): Either[ConfigReaderFailures, CompactedConfig] = {
191     for {
192       obj  <- cur.asObjectCursor.right
193       par  <- obj.atKey("partitions").right.flatMap(_.asListCursor).right
194       list <- convertList[PartitionConfig](par)(PartitionReader).right
195     } yield {
196       CompactedConfig(list)
197     }
198   }
199 
200   private def writePartitionConfigCompact(partition: PartitionConfig): ConfigValue = {
201     val list = new java.util.ArrayList[AnyRef](5)
202     list.add(partition.action.toString.take(1))
203     list.add(Long.box(partition.timestamp))
204     list.add(partition.envelope.asJava)
205     list.add(Long.box(partition.count))
206     list.add(partition.files.map(writeStorageFileCompact).asJava)
207     ConfigValueFactory.fromMap(Collections.singletonMap(partition.name, list))
208   }
209 
210   private def writePartitionConfigVerbose(partition: PartitionConfig): ConfigValue = {
211     val map = new java.util.HashMap[String, AnyRef](6)
212     map.put("name", partition.name)
213     map.put("action", partition.action.toString)
214     map.put("files", partition.files.map(writeStorageFileVerbose).asJava)
215     map.put("count", Long.box(partition.count))
216     map.put("timestamp", Long.box(partition.timestamp))
217     if (partition.envelope.nonEmpty) {
218       val envelope = new java.util.HashMap[String, AnyRef](4)
219       envelope.put("xmin", Double.box(partition.envelope.head))
220       envelope.put("ymin", Double.box(partition.envelope(1)))
221       envelope.put("xmax", Double.box(partition.envelope(2)))
222       envelope.put("ymax", Double.box(partition.envelope(3)))
223       map.put("envelope", envelope)
224     }
225     ConfigValueFactory.fromMap(map)
226   }
227 
228   private def readPartitionConfig(cur: ConfigCursor): Either[ConfigReaderFailures, PartitionConfig] = {
229     val compact = readPartitionConfigCompact(cur)
230     if (compact.isRight) { compact } else { readPartitionConfigVerbose(cur).left.flatMap(_ => compact) }
231   }
232 
233   private def readPartitionConfigCompact(cur: ConfigCursor): Either[ConfigReaderFailures, PartitionConfig] = {
234     cur.asObjectCursor.right.flatMap { obj =>
235       val name = obj.keys.head
236       obj.atKeyOrUndefined(name).asListCursor.right.flatMap { list =>
237         if (list.size != 5) {
238           cur.failed(CannotConvert(cur.valueOpt.map(_.toString).getOrElse(""),
239             classOf[PartitionConfig].getSimpleName, s"value ${cur.valueOpt.orNull} does not have the expected 6 elements"))
240         } else {
241           for {
242             action <- PartitionActionReader.from(list.atIndexOrUndefined(0)).right
243             ts     <- list.atIndexOrUndefined(1).asLong.right
244             env    <- list.atIndexOrUndefined(2).asListCursor.right.flatMap(readEnvelope).right
245             count  <- list.atIndexOrUndefined(3).asLong.right
246             files  <- list.atIndexOrUndefined(4).asListCursor.right.flatMap(convertList(_)(StorageFileCompactReader)).right
247           } yield {
248             PartitionConfig(name, action, files, count, env, ts)
249           }
250         }
251       }
252     }
253   }
254 
255   private def readPartitionConfigVerbose(cur: ConfigCursor): Either[ConfigReaderFailures, PartitionConfig] = {
256     def readEnvelope(obj: ConfigObjectCursor): Either[ConfigReaderFailures, Seq[Double]] = {
257       obj.atKeyOrUndefined("envelope") match {
258         case envelope if envelope.isUndefined => Right(Seq.empty)
259         case envelope =>
260           for {
261             env  <- envelope.asObjectCursor.right
262             xmin <- env.atKey("xmin").right.flatMap(_.asDouble).right
263             ymin <- env.atKey("ymin").right.flatMap(_.asDouble).right
264             xmax <- env.atKey("xmax").right.flatMap(_.asDouble).right
265             ymax <- env.atKey("ymax").right.flatMap(_.asDouble).right
266           } yield {
267             Seq(xmin, ymin, xmax, ymax)
268           }
269       }
270     }
271 
272     for {
273       obj    <- cur.asObjectCursor.right
274       name   <- obj.atKey("name").right.flatMap(_.asString).right
275       action <- obj.atKey("action").right.flatMap(PartitionActionReader.from).right
276       files  <- obj.atKey("files").right.flatMap(_.asListCursor).right.flatMap(convertList(_)(StorageFileVerboseReader)).right
277       count  <- obj.atKey("count").right.flatMap(ConfigReader.longConfigReader.from).right
278       bounds <- readEnvelope(obj).right
279       ts     <- obj.atKey("timestamp").right.flatMap(ConfigReader.longConfigReader.from).right
280     } yield {
281       PartitionConfig(name, action, files, count, bounds, ts)
282     }
283   }
284 
285   private def writeStorageFileCompact(file: StorageFile): ConfigValue = {
286     val list = new java.util.ArrayList[AnyRef](5)
287     list.add(file.name)
288     list.add(file.action.toString.take(1))
289     list.add(Long.box(file.timestamp))
290     if (file.sort.nonEmpty) {
291       list.add(file.sort.asJava)
292     }
293     if (file.bounds.nonEmpty) {
294       list.add(file.bounds.map { case (a, f, t) => Seq(a, f, t).asJava }.asJava)
295     }
296     ConfigValueFactory.fromIterable(list)
297   }
298 
299   private def writeStorageFileVerbose(file: StorageFile): ConfigValue = {
300     val map = new java.util.HashMap[String, AnyRef](5)
301     map.put("name", file.name)
302     map.put("timestamp", Long.box(file.timestamp))
303     map.put("action", file.action.toString)
304     if (file.sort.nonEmpty) {
305       map.put("sort", file.sort.asJava)
306     }
307     if (file.bounds.nonEmpty) {
308       map.put("bounds", file.bounds.map { case (a, f, t) => Seq(a, f, t).asJava }.asJava)
309     }
310     ConfigValueFactory.fromMap(map)
311   }
312 
313   private def readStorageFileCompact(cur: ConfigCursor): Either[ConfigReaderFailures, StorageFile] = {
314     cur.asListCursor.right.flatMap { list =>
315       if (list.size < 3 || list.size > 5) {
316         cur.failed(CannotConvert(cur.valueOpt.map(_.toString).getOrElse(""),
317           classOf[StorageFile].getSimpleName, s"value ${cur.valueOpt.orNull} does not have the expected number of elements"))
318       } else {
319         for {
320           name   <- list.atIndexOrUndefined(0).asString.right
321           action <- StorageFileActionReader.from(list.atIndexOrUndefined(1)).right
322           ts     <- list.atIndexOrUndefined(2).asLong.right
323           sort   <- readSort(list.atIndexOrUndefined(3)).right
324           bounds <- readBounds(list.atIndexOrUndefined(4)).right
325         } yield {
326           StorageFile(name, ts, action, sort, bounds)
327         }
328       }
329     }
330   }
331 
332   private def readStorageFileVerbose(cur: ConfigCursor): Either[ConfigReaderFailures, StorageFile] = {
333     val withAction = for {
334       obj    <- cur.asObjectCursor.right
335       name   <- obj.atKey("name").right.flatMap(_.asString).right
336       ts     <- obj.atKey("timestamp").right.flatMap(ConfigReader.longConfigReader.from).right
337       action <- obj.atKey("action").right.flatMap(StorageFileActionReader.from).right
338       sort   <- readSort(obj.atKeyOrUndefined("sort")).right
339       bounds <- readBounds(obj.atKeyOrUndefined("bounds")).right
340     } yield {
341       StorageFile(name, ts, action, sort, bounds)
342     }
343     if (withAction.isRight) { withAction } else {
344       // note: use 0 for timestamp to sort before any mods
345       val sansAction = for { name <- cur.asString.right } yield { StorageFile(name, 0L) }
346       sansAction.left.flatMap(_ => withAction) // if failure, replace with original error
347     }
348   }
349 
350   private def readEnvelope(env: ConfigListCursor): Either[ConfigReaderFailures, Seq[Double]] = {
351     convertList[Double](env).right.flatMap { coords =>
352       if (coords.isEmpty || coords.length == 4) { Right(coords) } else {
353         env.failed(CannotConvert(env.valueOpt.map(_.toString).getOrElse(""),
354           "Seq[Double]", s"value ${env.valueOpt.orNull} does not have the expected 4 elements"))
355       }
356     }
357   }
358 
359   private def readSort(cur: ConfigCursor): Either[ConfigReaderFailures, Seq[Int]] =
360     if (cur.isUndefined) { Right(Seq.empty) } else { cur.asListCursor.right.flatMap(convertList[Int]) }
361 
362   private def readBounds(cur: ConfigCursor): Either[ConfigReaderFailures, Seq[(Int, String, String)]] =
363     if (cur.isUndefined) { Right(Seq.empty) } else { cur.asListCursor.right.flatMap(convertList(_)(BoundReader)) }
364 
365   private def readBound(cur: ConfigCursor): Either[ConfigReaderFailures, (Int, String, String)] = {
366     cur.asListCursor.right.flatMap { list =>
367       if (list.size != 3) {
368         cur.failed(CannotConvert(cur.valueOpt.map(_.toString).getOrElse(""),
369           "Tuple3[Int, String, String]", s"value ${cur.valueOpt.orNull} does not have 3 elements"))
370       } else {
371         for {
372           attribute <- list.atIndexOrUndefined(0).asInt.right
373           from      <- list.atIndexOrUndefined(1).asString.right
374           to        <- list.atIndexOrUndefined(2).asString.right
375         } yield {
376           (attribute, from, to)
377         }
378       }
379     }
380   }
381 
382   private def convertList[T](
383       list: ConfigListCursor)
384      (implicit reader: ConfigReader[T]): Either[ConfigReaderFailures, Seq[T]] = {
385     val res = Seq.newBuilder[T]
386     var err: ConfigReaderFailures = null
387     var i = 0
388     while (i < list.size) {
389       reader.from(list.atIndexOrUndefined(i)) match {
390         case Right(success) => res += success
391         case Left(failure)  => if (err == null) { err = failure } else { err = err ++ failure }
392       }
393       i += 1
394     }
395     if (err == null) { Right(res.result) } else { Left(err) }
396   }
397 }
Line Stmt Id Pos Tree Symbol Tests Code
36 61986 1543 - 1639 Apply scala.Option.getOrElse namespace.map[org.geotools.api.feature.simple.SimpleFeatureType](((ns: String) => org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes.renameSft(sft, scala.StringContext.apply("", ":", "").s(ns, sft.getTypeName())))).getOrElse[org.geotools.api.feature.simple.SimpleFeatureType](sft)
45 61987 1906 - 1917 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp x$1.timestamp
45 61988 1905 - 1905 Select scala.math.Ordering.Long math.this.Ordering.Long
45 61989 1941 - 1960 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionAction.Add `package`.this.PartitionAction.Add
45 61990 1929 - 1960 Apply java.lang.Object.!= x$2.action.!=(`package`.this.PartitionAction.Add)
45 61995 1891 - 2152 Apply scala.collection.TraversableOnce.reduceLeftOption configs.sortBy[Long](((x$1: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => x$1.timestamp))(math.this.Ordering.Long).dropWhile(((x$2: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => x$2.action.!=(`package`.this.PartitionAction.Add))).reduceLeftOption[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((result: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig, update: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => update.action match { case `package`.this.PartitionAction.Add => result.+(update) case `package`.this.PartitionAction.Remove => result.-(update) }))
47 61991 2068 - 2083 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.+ result.+(update)
47 61992 2068 - 2083 Block org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.+ result.+(update)
48 61993 2123 - 2138 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.- result.-(update)
48 61994 2123 - 2138 Block org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.- result.-(update)
66 61996 2530 - 2549 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionAction.Add `package`.this.PartitionAction.Add
66 61997 2520 - 2549 Apply java.lang.Object.== PartitionConfig.this.action.==(`package`.this.PartitionAction.Add)
66 61998 2551 - 2589 Literal <nosymbol> "Can\'t aggregate into non-add actions"
66 61999 2512 - 2590 Apply scala.Predef.require scala.Predef.require(PartitionConfig.this.action.==(`package`.this.PartitionAction.Add), "Can\'t aggregate into non-add actions")
67 62000 2615 - 2624 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp PartitionConfig.this.timestamp
67 62001 2626 - 2641 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp other.timestamp
67 62002 2606 - 2642 Apply scala.math.max scala.math.`package`.max(PartitionConfig.this.timestamp, other.timestamp)
68 62003 2663 - 2679 Select scala.collection.SeqLike.isEmpty PartitionConfig.this.envelope.isEmpty
68 62004 2683 - 2697 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope other.envelope
68 62005 2683 - 2697 Block org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope other.envelope
68 62006 2709 - 2731 Select scala.collection.SeqLike.isEmpty other.envelope.isEmpty
68 62007 2735 - 2743 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope PartitionConfig.this.envelope
68 62008 2735 - 2743 Block org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope PartitionConfig.this.envelope
68 62022 2751 - 2984 Block <nosymbol> { <synthetic> <artifact> private[this] val x$3: (Double, Double, Double, Double) = (PartitionConfig.this.envelope: Seq[Double] @unchecked) match { case scala.collection.Seq.unapplySeq[Double](<unapply-selector>) <unapply> ((xmin1 @ _), (ymin1 @ _), (xmax1 @ _), (ymax1 @ _)) => scala.Tuple4.apply[Double, Double, Double, Double](xmin1, ymin1, xmax1, ymax1) }; val xmin1: Double = x$3._1; val ymin1: Double = x$3._2; val xmax1: Double = x$3._3; val ymax1: Double = x$3._4; <synthetic> <artifact> private[this] val x$4: (Double, Double, Double, Double) = (other.envelope: Seq[Double] @unchecked) match { case scala.collection.Seq.unapplySeq[Double](<unapply-selector>) <unapply> ((xmin2 @ _), (ymin2 @ _), (xmax2 @ _), (ymax2 @ _)) => scala.Tuple4.apply[Double, Double, Double, Double](xmin2, ymin2, xmax2, ymax2) }; val xmin2: Double = x$4._1; val ymin2: Double = x$4._2; val xmax2: Double = x$4._3; val ymax2: Double = x$4._4; scala.collection.Seq.apply[Double](scala.math.`package`.min(xmin1, xmin2), scala.math.`package`.min(ymin1, ymin2), scala.math.`package`.max(xmax1, xmax2), scala.math.`package`.max(ymax1, ymax2)) }
68 62023 2705 - 2984 If <nosymbol> if (other.envelope.isEmpty) PartitionConfig.this.envelope else { <synthetic> <artifact> private[this] val x$3: (Double, Double, Double, Double) = (PartitionConfig.this.envelope: Seq[Double] @unchecked) match { case scala.collection.Seq.unapplySeq[Double](<unapply-selector>) <unapply> ((xmin1 @ _), (ymin1 @ _), (xmax1 @ _), (ymax1 @ _)) => scala.Tuple4.apply[Double, Double, Double, Double](xmin1, ymin1, xmax1, ymax1) }; val xmin1: Double = x$3._1; val ymin1: Double = x$3._2; val xmax1: Double = x$3._3; val ymax1: Double = x$3._4; <synthetic> <artifact> private[this] val x$4: (Double, Double, Double, Double) = (other.envelope: Seq[Double] @unchecked) match { case scala.collection.Seq.unapplySeq[Double](<unapply-selector>) <unapply> ((xmin2 @ _), (ymin2 @ _), (xmax2 @ _), (ymax2 @ _)) => scala.Tuple4.apply[Double, Double, Double, Double](xmin2, ymin2, xmax2, ymax2) }; val xmin2: Double = x$4._1; val ymin2: Double = x$4._2; val xmax2: Double = x$4._3; val ymax2: Double = x$4._4; scala.collection.Seq.apply[Double](scala.math.`package`.min(xmin1, xmin2), scala.math.`package`.min(ymin1, ymin2), scala.math.`package`.max(xmax1, xmax2), scala.math.`package`.max(ymax1, ymax2)) }
69 62009 2769 - 2769 Select scala.Tuple4._1 x$3._1
69 62010 2776 - 2776 Select scala.Tuple4._2 x$3._2
69 62011 2783 - 2783 Select scala.Tuple4._3 x$3._3
69 62012 2790 - 2790 Select scala.Tuple4._4 x$3._4
70 62013 2824 - 2824 Select scala.Tuple4._1 x$4._1
70 62014 2831 - 2831 Select scala.Tuple4._2 x$4._2
70 62015 2838 - 2838 Select scala.Tuple4._3 x$4._3
70 62016 2845 - 2845 Select scala.Tuple4._4 x$4._4
71 62017 2881 - 2903 Apply scala.math.min scala.math.`package`.min(xmin1, xmin2)
71 62018 2905 - 2927 Apply scala.math.min scala.math.`package`.min(ymin1, ymin2)
71 62019 2929 - 2951 Apply scala.math.max scala.math.`package`.max(xmax1, xmax2)
71 62020 2953 - 2975 Apply scala.math.max scala.math.`package`.max(ymax1, ymax2)
71 62021 2877 - 2976 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Double](scala.math.`package`.min(xmin1, xmin2), scala.math.`package`.min(ymin1, ymin2), scala.math.`package`.max(xmax1, xmax2), scala.math.`package`.max(ymax1, ymax2))
73 62024 3007 - 3011 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.name PartitionConfig.this.name
73 62025 3013 - 3019 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.action PartitionConfig.this.action
73 62026 3030 - 3041 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.files other.files
73 62027 3027 - 3027 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]
73 62028 3021 - 3041 ApplyToImplicitArgs scala.collection.TraversableLike.++ PartitionConfig.this.files.++[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](other.files)(collection.this.Seq.canBuildFrom[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile])
73 62029 3051 - 3062 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.count other.count
73 62030 3043 - 3062 Apply scala.Long.+ PartitionConfig.this.count.+(other.count)
73 62031 2991 - 3072 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.apply `package`.this.PartitionConfig.apply(PartitionConfig.this.name, PartitionConfig.this.action, PartitionConfig.this.files.++[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](other.files)(collection.this.Seq.canBuildFrom[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]), PartitionConfig.this.count.+(other.count), env, ts)
77 62032 3159 - 3178 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionAction.Add `package`.this.PartitionAction.Add
77 62033 3149 - 3178 Apply java.lang.Object.== PartitionConfig.this.action.==(`package`.this.PartitionAction.Add)
77 62034 3180 - 3218 Literal <nosymbol> "Can\'t aggregate into non-add actions"
77 62035 3141 - 3219 Apply scala.Predef.require scala.Predef.require(PartitionConfig.this.action.==(`package`.this.PartitionAction.Add), "Can\'t aggregate into non-add actions")
78 62036 3244 - 3253 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp PartitionConfig.this.timestamp
78 62037 3255 - 3270 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp other.timestamp
78 62038 3235 - 3271 Apply scala.math.max scala.math.`package`.max(PartitionConfig.this.timestamp, other.timestamp)
79 62039 3355 - 3356 Literal <nosymbol> 0
79 62040 3290 - 3357 Apply scala.collection.mutable.Map.withDefault scala.collection.mutable.Map.empty[String, Int].withDefault(((x$5: String) => 0))
80 62041 3397 - 3397 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.name f.name
80 62042 3389 - 3407 Apply scala.Int.+ names.apply(f.name).+(1)
80 62043 3389 - 3407 Apply scala.collection.mutable.MapLike.update names.update(f.name, names.apply(f.name).+(1))
80 62044 3364 - 3408 Apply scala.collection.IterableLike.foreach other.files.foreach[Unit](((f: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => names.update(f.name, names.apply(f.name).+(1))))
82 62045 3488 - 3499 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.timestamp x$6.timestamp
82 62046 3501 - 3522 Select scala.math.Ordering.reverse scala.`package`.Ordering.Long.reverse
82 62054 3475 - 3662 Apply scala.collection.TraversableLike.filter PartitionConfig.this.files.sortBy[Long](((x$6: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => x$6.timestamp))(scala.`package`.Ordering.Long.reverse).filter(((f: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => names.apply(f.name) match { case 0 => true case (i @ _) => { names.put(f.name, i.-(1)); false } }))
84 62047 3588 - 3592 Literal <nosymbol> true
84 62048 3588 - 3592 Block <nosymbol> true
85 62049 3623 - 3629 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.name f.name
85 62050 3631 - 3636 Apply scala.Int.- i.-(1)
85 62051 3613 - 3637 Apply scala.collection.mutable.MapLike.put names.put(f.name, i.-(1))
85 62052 3639 - 3644 Literal <nosymbol> false
85 62053 3610 - 3644 Block <nosymbol> { names.put(f.name, i.-(1)); false }
88 62055 3685 - 3689 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.name PartitionConfig.this.name
88 62056 3691 - 3697 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.action PartitionConfig.this.action
88 62057 3712 - 3713 Literal <nosymbol> 0L
88 62058 3723 - 3734 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.count other.count
88 62059 3715 - 3734 Apply scala.Long.- PartitionConfig.this.count.-(other.count)
88 62060 3703 - 3735 Apply scala.math.max scala.math.`package`.max(0L, PartitionConfig.this.count.-(other.count))
88 62061 3737 - 3745 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope PartitionConfig.this.envelope
88 62062 3669 - 3750 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.apply `package`.this.PartitionConfig.apply(PartitionConfig.this.name, PartitionConfig.this.action, fs, scala.math.`package`.max(0L, PartitionConfig.this.count.-(other.count)), PartitionConfig.this.envelope, ts)
92 62063 3819 - 3827 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope PartitionConfig.this.envelope
93 62064 3856 - 3860 Select scala.None scala.None
93 62065 3856 - 3860 Block scala.None scala.None
94 62066 3910 - 3949 Apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds.apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds.apply(xmin, ymin, xmax, ymax)
94 62067 3905 - 3950 Apply scala.Some.apply scala.Some.apply[org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds](org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds.apply(xmin, ymin, xmax, ymax))
94 62068 3905 - 3950 Block scala.Some.apply scala.Some.apply[org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds](org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionBounds.apply(xmin, ymin, xmax, ymax))
95 62069 3969 - 4032 Throw <nosymbol> throw new java.lang.IllegalStateException(scala.StringContext.apply("Invalid envelope: ", "").s(PartitionConfig.this.envelope))
95 62070 3969 - 4032 Block <nosymbol> throw new java.lang.IllegalStateException(scala.StringContext.apply("Invalid envelope: ", "").s(PartitionConfig.this.envelope))
97 62071 4065 - 4069 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.name PartitionConfig.this.name
97 62072 4071 - 4076 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.files PartitionConfig.this.files
97 62073 4086 - 4091 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.count PartitionConfig.this.count
97 62074 4047 - 4092 Apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionMetadata.apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.PartitionMetadata.apply(PartitionConfig.this.name, PartitionConfig.this.files, bounds, PartitionConfig.this.count)
103 62075 4213 - 4213 Select scala.Enumeration.Value PartitionAction.this.Value
103 62076 4213 - 4213 Select scala.Enumeration.Value PartitionAction.this.Value
103 62077 4213 - 4218 Select scala.Enumeration.Value PartitionAction.this.Value
108 62078 4311 - 4315 Literal <nosymbol> null
108 62079 4319 - 4329 Apply org.locationtech.jts.geom.Envelope.isNull env.isNull()
108 62080 4304 - 4329 Apply scala.Boolean.|| env.==(null).||(env.isNull())
108 62081 4333 - 4342 TypeApply scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
108 62082 4333 - 4342 Block scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
108 62083 4356 - 4367 Apply org.locationtech.jts.geom.Envelope.getMinX env.getMinX()
108 62084 4369 - 4380 Apply org.locationtech.jts.geom.Envelope.getMinY env.getMinY()
108 62085 4382 - 4393 Apply org.locationtech.jts.geom.Envelope.getMaxX env.getMaxX()
108 62086 4395 - 4406 Apply org.locationtech.jts.geom.Envelope.getMaxY env.getMaxY()
108 62087 4352 - 4407 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Double](env.getMinX(), env.getMinY(), env.getMaxX(), env.getMaxY())
108 62088 4352 - 4407 Block scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Double](env.getMinX(), env.getMinY(), env.getMaxX(), env.getMaxY())
123 62089 4788 - 4839 Apply scala.reflect.ClassTag.apply scala.reflect.ClassTag.apply[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig])
124 62090 4870 - 4921 Apply scala.reflect.ClassTag.apply scala.reflect.ClassTag.apply[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$CompactedConfig])
127 62091 5028 - 5035 Select org.locationtech.geomesa.fs.storage.common.metadata.MetadataConverter.options MetadataConverter.this.options
127 62092 4991 - 5036 Apply com.typesafe.config.ConfigValue.render MetadataConverter.this.partitionWriter.to(partition).render(MetadataConverter.this.options)
129 62093 5162 - 5173 Select org.locationtech.geomesa.fs.storage.common.metadata.MetadataConverter.partitionCt MetadataConverter.this.partitionCt
129 62094 5175 - 5190 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionReader `package`.this.PartitionReader
129 62095 5101 - 5191 Apply pureconfig.ConfigSource.loadOrThrow pureconfig.ConfigSource.fromConfig(config).loadOrThrow[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](MetadataConverter.this.partitionCt, `package`.this.PartitionReader)
132 62096 5287 - 5314 Apply org.locationtech.geomesa.fs.storage.common.metadata.CompactedConfig.apply `package`.this.CompactedConfig.apply(compaction)
132 62097 5323 - 5330 Select org.locationtech.geomesa.fs.storage.common.metadata.MetadataConverter.options MetadataConverter.this.options
132 62098 5268 - 5331 Apply com.typesafe.config.ConfigValue.render MetadataConverter.this.compactedWriter.to(`package`.this.CompactedConfig.apply(compaction)).render(MetadataConverter.this.options)
134 62099 5463 - 5474 Select org.locationtech.geomesa.fs.storage.common.metadata.MetadataConverter.compactedCt MetadataConverter.this.compactedCt
134 62100 5476 - 5491 Select org.locationtech.geomesa.fs.storage.common.metadata.CompactedReader `package`.this.CompactedReader
134 62101 5402 - 5503 Select org.locationtech.geomesa.fs.storage.common.metadata.CompactedConfig.partitions pureconfig.ConfigSource.fromConfig(config).loadOrThrow[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](MetadataConverter.this.compactedCt, `package`.this.CompactedReader).partitions
139 62102 5569 - 5582 Select org.locationtech.geomesa.fs.storage.common.metadata.RenderCompact `package`.this.RenderCompact
139 62103 5584 - 5596 Select org.locationtech.geomesa.fs.storage.common.metadata.RenderPretty `package`.this.RenderPretty
139 62104 5565 - 5597 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[org.locationtech.geomesa.fs.storage.common.metadata.package.MetadataConverter](`package`.this.RenderCompact, `package`.this.RenderPretty)
142 62105 5669 - 5698 Apply java.lang.String.equalsIgnoreCase x$7.name.equalsIgnoreCase(name)
142 62107 5656 - 5868 Apply scala.Option.getOrElse MetadataConverter.this.options.find(((x$7: org.locationtech.geomesa.fs.storage.common.metadata.package.MetadataConverter) => x$7.name.equalsIgnoreCase(name))).getOrElse[org.locationtech.geomesa.fs.storage.common.metadata.package.MetadataConverter](throw new scala.`package`.IllegalArgumentException(scala.StringContext.apply("Render type \'", "\' does not exist. Available types: ", "").s(name, MetadataConverter.this.options.map[String, Seq[String]](((x$8: org.locationtech.geomesa.fs.storage.common.metadata.package.MetadataConverter) => x$8.name))(collection.this.Seq.canBuildFrom[String]).mkString(", "))))
143 62106 5720 - 5860 Throw <nosymbol> throw new scala.`package`.IllegalArgumentException(scala.StringContext.apply("Render type \'", "\' does not exist. Available types: ", "").s(name, MetadataConverter.this.options.map[String, Seq[String]](((x$8: org.locationtech.geomesa.fs.storage.common.metadata.package.MetadataConverter) => x$8.name))(collection.this.Seq.canBuildFrom[String]).mkString(", ")))
150 62108 5962 - 5999 Select org.locationtech.geomesa.fs.storage.common.metadata.FileBasedMetadata.Config.RenderPretty FileBasedMetadata.Config.RenderPretty
151 62109 6034 - 6041 Literal <nosymbol> ".json"
153 62110 6150 - 6177 Apply org.locationtech.geomesa.fs.storage.common.metadata.writePartitionConfigVerbose `package`.this.writePartitionConfigVerbose(partition)
153 62111 6124 - 6178 Apply pureconfig.ConfigWriter.fromFunction pureconfig.ConfigWriter.fromFunction[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]({ ((partition: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => `package`.this.writePartitionConfigVerbose(partition)) })
155 62112 6287 - 6324 Apply org.locationtech.geomesa.fs.storage.common.metadata.writeCompactedConfig `package`.this.writeCompactedConfig(RenderPretty.this.partitionWriter)(compacted)
155 62113 6261 - 6325 Apply pureconfig.ConfigWriter.fromFunction pureconfig.ConfigWriter.fromFunction[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig]({ ((compacted: org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig) => `package`.this.writeCompactedConfig(RenderPretty.this.partitionWriter)(compacted)) })
156 62114 6384 - 6432 Apply com.typesafe.config.ConfigRenderOptions.setFormatted com.typesafe.config.ConfigRenderOptions.concise().setFormatted(true)
160 62115 6521 - 6559 Select org.locationtech.geomesa.fs.storage.common.metadata.FileBasedMetadata.Config.RenderCompact FileBasedMetadata.Config.RenderCompact
161 62116 6594 - 6601 Literal <nosymbol> ".conf"
163 62117 6710 - 6737 Apply org.locationtech.geomesa.fs.storage.common.metadata.writePartitionConfigCompact `package`.this.writePartitionConfigCompact(partition)
163 62118 6684 - 6738 Apply pureconfig.ConfigWriter.fromFunction pureconfig.ConfigWriter.fromFunction[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]({ ((partition: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => `package`.this.writePartitionConfigCompact(partition)) })
165 62119 6847 - 6884 Apply org.locationtech.geomesa.fs.storage.common.metadata.writeCompactedConfig `package`.this.writeCompactedConfig(RenderCompact.this.partitionWriter)(compacted)
165 62120 6821 - 6885 Apply pureconfig.ConfigWriter.fromFunction pureconfig.ConfigWriter.fromFunction[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig]({ ((compacted: org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig) => `package`.this.writeCompactedConfig(RenderCompact.this.partitionWriter)(compacted)) })
166 62121 6944 - 6988 Apply com.typesafe.config.ConfigRenderOptions.setJson com.typesafe.config.ConfigRenderOptions.concise().setJson(false)
171 62125 7147 - 7446 Apply scala.util.Either.RightProjection.flatMap cur.asString.right.flatMap[pureconfig.error.ConfigReaderFailures, T#Value](((s: String) => { <stable> <accessor> lazy val reason: pureconfig.error.CannotConvert = pureconfig.error.CannotConvert.apply(s, EnumerationReader.this.enum.getClass().getName(), scala.StringContext.apply("value ", " is not a valid enum: ", "").s(s, EnumerationReader.this.enum.values.mkString(", "))); EnumerationReader.this.enum.values.find(((x$9: EnumerationReader.this.enum.Value) => x$9.toString().startsWith(s))).asInstanceOf[Option[T#Value]].toRight[pureconfig.error.ConfigReaderFailures](cur.failed[Nothing](reason).left.get) }))
174 62122 7346 - 7370 Apply java.lang.String.startsWith x$9.toString().startsWith(s)
174 62123 7410 - 7437 Select scala.util.Either.LeftProjection.get cur.failed[Nothing](reason).left.get
174 62124 7329 - 7438 Apply scala.Option.toRight EnumerationReader.this.enum.values.find(((x$9: EnumerationReader.this.enum.Value) => x$9.toString().startsWith(s))).asInstanceOf[Option[T#Value]].toRight[pureconfig.error.ConfigReaderFailures](cur.failed[Nothing](reason).left.get)
179 62126 7514 - 7533 Apply org.locationtech.geomesa.fs.storage.common.metadata.readPartitionConfig `package`.this.readPartitionConfig(cur)
179 62127 7490 - 7534 Apply pureconfig.ConfigReader.fromCursor pureconfig.ConfigReader.fromCursor[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]({ ((cur: pureconfig.ConfigCursor) => `package`.this.readPartitionConfig(cur)) })
180 62128 7591 - 7610 Apply org.locationtech.geomesa.fs.storage.common.metadata.readCompactedConfig `package`.this.readCompactedConfig(cur)
180 62129 7567 - 7611 Apply pureconfig.ConfigReader.fromCursor pureconfig.ConfigReader.fromCursor[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig]({ ((cur: pureconfig.ConfigCursor) => `package`.this.readCompactedConfig(cur)) })
181 62130 7677 - 7699 Apply org.locationtech.geomesa.fs.storage.common.metadata.readStorageFileCompact `package`.this.readStorageFileCompact(cur)
181 62131 7653 - 7700 Apply pureconfig.ConfigReader.fromCursor pureconfig.ConfigReader.fromCursor[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]({ ((cur: pureconfig.ConfigCursor) => `package`.this.readStorageFileCompact(cur)) })
182 62132 7766 - 7788 Apply org.locationtech.geomesa.fs.storage.common.metadata.readStorageFileVerbose `package`.this.readStorageFileVerbose(cur)
182 62133 7742 - 7789 Apply pureconfig.ConfigReader.fromCursor pureconfig.ConfigReader.fromCursor[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]({ ((cur: pureconfig.ConfigCursor) => `package`.this.readStorageFileVerbose(cur)) })
183 62134 7842 - 7851 Apply org.locationtech.geomesa.fs.storage.common.metadata.readBound `package`.this.readBound(cur)
183 62135 7818 - 7852 Apply pureconfig.ConfigReader.fromCursor pureconfig.ConfigReader.fromCursor[(Int, String, String)]({ ((cur: pureconfig.ConfigCursor) => `package`.this.readBound(cur)) })
184 62136 7913 - 7928 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionAction `package`.this.PartitionAction
184 62137 7891 - 7929 Apply org.locationtech.geomesa.fs.storage.common.metadata.EnumerationReader.<init> new org.locationtech.geomesa.fs.storage.common.metadata.package.EnumerationReader[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.type](`package`.this.PartitionAction)
185 62138 7992 - 8009 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction
185 62139 7970 - 8010 Apply org.locationtech.geomesa.fs.storage.common.metadata.EnumerationReader.<init> new org.locationtech.geomesa.fs.storage.common.metadata.package.EnumerationReader[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.type](org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction)
188 62140 8187 - 8199 Literal <nosymbol> "partitions"
188 62141 8226 - 8237 Apply pureconfig.ConfigWriter.to delegate.to(a)
188 62142 8225 - 8225 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue]
188 62143 8201 - 8238 ApplyToImplicitArgs scala.collection.TraversableLike.map compacted.partitions.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((a: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => delegate.to(a)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])
188 62144 8201 - 8245 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](compacted.partitions.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((a: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => delegate.to(a)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava
188 62145 8162 - 8246 Apply java.util.Collections.singletonMap java.util.Collections.singletonMap[String, java.util.List[com.typesafe.config.ConfigValue]]("partitions", scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](compacted.partitions.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((a: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => delegate.to(a)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava)
188 62146 8135 - 8247 Apply com.typesafe.config.ConfigValueFactory.fromMap com.typesafe.config.ConfigValueFactory.fromMap(java.util.Collections.singletonMap[String, java.util.List[com.typesafe.config.ConfigValue]]("partitions", scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](compacted.partitions.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((a: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig) => delegate.to(a)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava))
192 62153 8357 - 8588 Apply scala.util.Either.RightProjection.flatMap cur.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((obj: pureconfig.ConfigObjectCursor) => obj.atKey("partitions").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$10: pureconfig.ConfigCursor) => x$10.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((par: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](par)(`package`.this.PartitionReader).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((list: Seq[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]) => `package`.this.CompactedConfig.apply(list)))))))
193 62147 8426 - 8438 Literal <nosymbol> "partitions"
193 62148 8454 - 8468 Select pureconfig.ConfigCursor.asListCursor x$10.asListCursor
193 62152 8408 - 8588 Apply scala.util.Either.RightProjection.flatMap obj.atKey("partitions").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$10: pureconfig.ConfigCursor) => x$10.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((par: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](par)(`package`.this.PartitionReader).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((list: Seq[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]) => `package`.this.CompactedConfig.apply(list)))))
194 62149 8524 - 8539 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionReader `package`.this.PartitionReader
194 62151 8482 - 8588 Apply scala.util.Either.RightProjection.map `package`.this.convertList[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](par)(`package`.this.PartitionReader).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.CompactedConfig](((list: Seq[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig]) => `package`.this.CompactedConfig.apply(list)))
196 62150 8567 - 8588 Apply org.locationtech.geomesa.fs.storage.common.metadata.CompactedConfig.apply `package`.this.CompactedConfig.apply(list)
201 62154 8702 - 8736 Apply java.util.ArrayList.<init> new java.util.ArrayList[AnyRef](5)
202 62155 8750 - 8783 Apply scala.collection.IndexedSeqOptimized.take scala.Predef.augmentString(partition.action.toString()).take(1)
202 62156 8741 - 8784 Apply java.util.ArrayList.add list.add(scala.Predef.augmentString(partition.action.toString()).take(1))
203 62157 8807 - 8826 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp partition.timestamp
203 62158 8798 - 8827 Apply scala.Long.box scala.Long.box(partition.timestamp)
203 62159 8789 - 8828 Apply java.util.ArrayList.add list.add(scala.Long.box(partition.timestamp))
204 62160 8842 - 8860 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.envelope partition.envelope
204 62161 8842 - 8867 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Double](partition.envelope).asJava
204 62162 8833 - 8868 Apply java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[Double](partition.envelope).asJava)
205 62163 8891 - 8906 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.count partition.count
205 62164 8882 - 8907 Apply scala.Long.box scala.Long.box(partition.count)
205 62165 8873 - 8908 Apply java.util.ArrayList.add list.add(scala.Long.box(partition.count))
206 62166 8942 - 8965 Apply org.locationtech.geomesa.fs.storage.common.metadata.writeStorageFileCompact `package`.this.writeStorageFileCompact(file)
206 62167 8941 - 8941 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue]
206 62168 8922 - 8966 ApplyToImplicitArgs scala.collection.TraversableLike.map partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileCompact(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])
206 62169 8922 - 8973 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileCompact(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava
206 62170 8913 - 8974 Apply java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileCompact(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava)
207 62171 9031 - 9045 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.name partition.name
207 62172 9006 - 9052 Apply java.util.Collections.singletonMap java.util.Collections.singletonMap[String, java.util.ArrayList[AnyRef]](partition.name, list)
207 62173 8979 - 9053 Apply com.typesafe.config.ConfigValueFactory.fromMap com.typesafe.config.ConfigValueFactory.fromMap(java.util.Collections.singletonMap[String, java.util.ArrayList[AnyRef]](partition.name, list))
211 62174 9160 - 9200 Apply java.util.HashMap.<init> new java.util.HashMap[String,AnyRef](6)
212 62175 9213 - 9219 Literal <nosymbol> "name"
212 62176 9221 - 9235 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.name partition.name
212 62177 9205 - 9236 Apply java.util.HashMap.put map.put("name", partition.name)
213 62178 9249 - 9257 Literal <nosymbol> "action"
213 62179 9259 - 9284 Apply java.lang.Object.toString partition.action.toString()
213 62180 9241 - 9285 Apply java.util.HashMap.put map.put("action", partition.action.toString())
214 62181 9298 - 9305 Literal <nosymbol> "files"
214 62182 9327 - 9350 Apply org.locationtech.geomesa.fs.storage.common.metadata.writeStorageFileVerbose `package`.this.writeStorageFileVerbose(file)
214 62183 9326 - 9326 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue]
214 62184 9307 - 9351 ApplyToImplicitArgs scala.collection.TraversableLike.map partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileVerbose(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])
214 62185 9307 - 9358 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileVerbose(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava
214 62186 9290 - 9359 Apply java.util.HashMap.put map.put("files", scala.collection.JavaConverters.seqAsJavaListConverter[com.typesafe.config.ConfigValue](partition.files.map[com.typesafe.config.ConfigValue, Seq[com.typesafe.config.ConfigValue]]({ ((file: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile) => `package`.this.writeStorageFileVerbose(file)) })(collection.this.Seq.canBuildFrom[com.typesafe.config.ConfigValue])).asJava)
215 62187 9372 - 9379 Literal <nosymbol> "count"
215 62188 9390 - 9405 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.count partition.count
215 62189 9381 - 9406 Apply scala.Long.box scala.Long.box(partition.count)
215 62190 9364 - 9407 Apply java.util.HashMap.put map.put("count", scala.Long.box(partition.count))
216 62191 9420 - 9431 Literal <nosymbol> "timestamp"
216 62192 9442 - 9461 Select org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.timestamp partition.timestamp
216 62193 9433 - 9462 Apply scala.Long.box scala.Long.box(partition.timestamp)
216 62194 9412 - 9463 Apply java.util.HashMap.put map.put("timestamp", scala.Long.box(partition.timestamp))
217 62195 9472 - 9499 Select scala.collection.TraversableOnce.nonEmpty partition.envelope.nonEmpty
217 62214 9501 - 9856 Block <nosymbol> { val envelope: java.util.HashMap[String,AnyRef] = new java.util.HashMap[String,AnyRef](4); envelope.put("xmin", scala.Double.box(partition.envelope.head)); envelope.put("ymin", scala.Double.box(partition.envelope.apply(1))); envelope.put("xmax", scala.Double.box(partition.envelope.apply(2))); envelope.put("ymax", scala.Double.box(partition.envelope.apply(3))); map.put("envelope", envelope) }
217 62215 9468 - 9468 Literal <nosymbol> ()
217 62216 9468 - 9468 Block <nosymbol> ()
218 62196 9524 - 9564 Apply java.util.HashMap.<init> new java.util.HashMap[String,AnyRef](4)
219 62197 9584 - 9590 Literal <nosymbol> "xmin"
219 62198 9603 - 9626 Select scala.collection.IterableLike.head partition.envelope.head
219 62199 9592 - 9627 Apply scala.Double.box scala.Double.box(partition.envelope.head)
219 62200 9571 - 9628 Apply java.util.HashMap.put envelope.put("xmin", scala.Double.box(partition.envelope.head))
220 62201 9648 - 9654 Literal <nosymbol> "ymin"
220 62202 9667 - 9688 Apply scala.collection.SeqLike.apply partition.envelope.apply(1)
220 62203 9656 - 9689 Apply scala.Double.box scala.Double.box(partition.envelope.apply(1))
220 62204 9635 - 9690 Apply java.util.HashMap.put envelope.put("ymin", scala.Double.box(partition.envelope.apply(1)))
221 62205 9710 - 9716 Literal <nosymbol> "xmax"
221 62206 9729 - 9750 Apply scala.collection.SeqLike.apply partition.envelope.apply(2)
221 62207 9718 - 9751 Apply scala.Double.box scala.Double.box(partition.envelope.apply(2))
221 62208 9697 - 9752 Apply java.util.HashMap.put envelope.put("xmax", scala.Double.box(partition.envelope.apply(2)))
222 62209 9772 - 9778 Literal <nosymbol> "ymax"
222 62210 9791 - 9812 Apply scala.collection.SeqLike.apply partition.envelope.apply(3)
222 62211 9780 - 9813 Apply scala.Double.box scala.Double.box(partition.envelope.apply(3))
222 62212 9759 - 9814 Apply java.util.HashMap.put envelope.put("ymax", scala.Double.box(partition.envelope.apply(3)))
223 62213 9821 - 9850 Apply java.util.HashMap.put map.put("envelope", envelope)
225 62217 9861 - 9892 Apply com.typesafe.config.ConfigValueFactory.fromMap com.typesafe.config.ConfigValueFactory.fromMap(map)
229 62218 10020 - 10051 Apply org.locationtech.geomesa.fs.storage.common.metadata.readPartitionConfigCompact `package`.this.readPartitionConfigCompact(cur)
230 62219 10060 - 10075 Select scala.util.Either.isRight compact.isRight
230 62220 10079 - 10086 Ident org.locationtech.geomesa.fs.storage.common.metadata.package.compact compact
230 62221 10096 - 10154 Apply scala.util.Either.LeftProjection.flatMap `package`.this.readPartitionConfigVerbose(cur).left.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((x$11: pureconfig.error.ConfigReaderFailures) => compact))
230 62222 10096 - 10154 Block scala.util.Either.LeftProjection.flatMap `package`.this.readPartitionConfigVerbose(cur).left.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((x$11: pureconfig.error.ConfigReaderFailures) => compact))
234 62251 10277 - 11233 Apply scala.util.Either.RightProjection.flatMap cur.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((obj: pureconfig.ConfigObjectCursor) => { val name: String = obj.keys.head; obj.atKeyOrUndefined(name).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((list: pureconfig.ConfigListCursor) => if (list.size.!=(5)) cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))) else `package`.this.PartitionActionReader.from(list.atIndexOrUndefined(0)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => list.atIndexOrUndefined(1).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts))))))))))))) }))
235 62223 10336 - 10349 Select scala.collection.IterableLike.head obj.keys.head
236 62250 10356 - 11227 Apply scala.util.Either.RightProjection.flatMap obj.atKeyOrUndefined(name).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((list: pureconfig.ConfigListCursor) => if (list.size.!=(5)) cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))) else `package`.this.PartitionActionReader.from(list.atIndexOrUndefined(0)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => list.atIndexOrUndefined(1).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))))))))))
237 62224 10432 - 10446 Apply scala.Int.!= list.size.!=(5)
238 62225 10485 - 10527 Apply scala.Option.getOrElse cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String]("")
238 62232 10471 - 10651 Apply pureconfig.error.CannotConvert.apply pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))
238 62233 10460 - 10652 Apply pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
238 62234 10460 - 10652 Block pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$12: com.typesafe.config.ConfigValue) => x$12.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
239 62226 10541 - 10579 Apply java.lang.Class.getSimpleName classOf[org.locationtech.geomesa.fs.storage.common.metadata.package$$PartitionConfig].getSimpleName()
239 62227 10583 - 10590 Literal <nosymbol> "value "
239 62228 10611 - 10650 Literal <nosymbol> " does not have the expected 6 elements"
239 62229 10604 - 10604 TypeApply scala.Predef.$conforms scala.Predef.$conforms[Null]
239 62230 10591 - 10610 ApplyToImplicitArgs scala.Option.orNull cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])
239 62231 10581 - 10650 Apply scala.StringContext.s scala.StringContext.apply("value ", " does not have the expected 6 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))
242 62235 10735 - 10761 Apply pureconfig.ConfigListCursor.atIndexOrUndefined list.atIndexOrUndefined(0)
242 62248 10680 - 11197 Apply scala.util.Either.RightProjection.flatMap `package`.this.PartitionActionReader.from(list.atIndexOrUndefined(0)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => list.atIndexOrUndefined(1).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))))))))
242 62249 10680 - 11197 Block scala.util.Either.RightProjection.flatMap `package`.this.PartitionActionReader.from(list.atIndexOrUndefined(0)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => list.atIndexOrUndefined(1).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))))))))
243 62236 10815 - 10816 Literal <nosymbol> 1
243 62247 10781 - 11197 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(1).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))))))
244 62237 10877 - 10878 Literal <nosymbol> 2
244 62238 10907 - 10919 Apply org.locationtech.geomesa.fs.storage.common.metadata.readEnvelope `package`.this.readEnvelope(env)
244 62246 10843 - 11197 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(2).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]]({ ((env: pureconfig.ConfigListCursor) => `package`.this.readEnvelope(env)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((env: Seq[Double]) => list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))))
245 62239 10973 - 10974 Literal <nosymbol> 3
245 62245 10939 - 11197 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(3).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))))
246 62240 11035 - 11036 Literal <nosymbol> 4
246 62241 11080 - 11104 Select org.locationtech.geomesa.fs.storage.common.metadata.StorageFileCompactReader `package`.this.StorageFileCompactReader
246 62242 11065 - 11105 Apply org.locationtech.geomesa.fs.storage.common.metadata.convertList `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader)
246 62244 11001 - 11197 Apply scala.util.Either.RightProjection.map list.atIndexOrUndefined(4).asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$13: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$13)(`package`.this.StorageFileCompactReader))).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)))
248 62243 11145 - 11197 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.apply `package`.this.PartitionConfig.apply(name, action, files, count, env, ts)
257 62252 11449 - 11481 Apply pureconfig.ConfigObjectCursor.atKeyOrUndefined obj.atKeyOrUndefined("envelope")
258 62253 11515 - 11535 Select pureconfig.ConfigCursor.isUndefined envelope.isUndefined
258 62254 11545 - 11554 TypeApply scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
258 62255 11539 - 11555 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
258 62256 11539 - 11555 Block scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
261 62270 11591 - 11986 Apply scala.util.Either.RightProjection.flatMap envelope.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((env: pureconfig.ConfigObjectCursor) => env.atKey("xmin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$14: pureconfig.ConfigCursor) => x$14.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmin: Double) => env.atKey("ymin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$15: pureconfig.ConfigCursor) => x$15.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((ymin: Double) => env.atKey("xmax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$16: pureconfig.ConfigCursor) => x$16.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmax: Double) => env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))))))))))
261 62271 11591 - 11986 Block scala.util.Either.RightProjection.flatMap envelope.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((env: pureconfig.ConfigObjectCursor) => env.atKey("xmin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$14: pureconfig.ConfigCursor) => x$14.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmin: Double) => env.atKey("ymin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$15: pureconfig.ConfigCursor) => x$15.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((ymin: Double) => env.atKey("xmax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$16: pureconfig.ConfigCursor) => x$16.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmax: Double) => env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))))))))))
262 62257 11677 - 11683 Literal <nosymbol> "xmin"
262 62258 11699 - 11709 Select pureconfig.ConfigCursor.asDouble x$14.asDouble
262 62269 11659 - 11986 Apply scala.util.Either.RightProjection.flatMap env.atKey("xmin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$14: pureconfig.ConfigCursor) => x$14.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmin: Double) => env.atKey("ymin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$15: pureconfig.ConfigCursor) => x$15.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((ymin: Double) => env.atKey("xmax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$16: pureconfig.ConfigCursor) => x$16.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmax: Double) => env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))))))))
263 62259 11747 - 11753 Literal <nosymbol> "ymin"
263 62260 11769 - 11779 Select pureconfig.ConfigCursor.asDouble x$15.asDouble
263 62268 11729 - 11986 Apply scala.util.Either.RightProjection.flatMap env.atKey("ymin").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$15: pureconfig.ConfigCursor) => x$15.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((ymin: Double) => env.atKey("xmax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$16: pureconfig.ConfigCursor) => x$16.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmax: Double) => env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))))))
264 62261 11817 - 11823 Literal <nosymbol> "xmax"
264 62262 11839 - 11849 Select pureconfig.ConfigCursor.asDouble x$16.asDouble
264 62267 11799 - 11986 Apply scala.util.Either.RightProjection.flatMap env.atKey("xmax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$16: pureconfig.ConfigCursor) => x$16.asDouble)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((xmax: Double) => env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))))
265 62263 11887 - 11893 Literal <nosymbol> "ymax"
265 62264 11909 - 11919 Select pureconfig.ConfigCursor.asDouble x$17.asDouble
265 62266 11869 - 11986 Apply scala.util.Either.RightProjection.map env.atKey("ymax").right.flatMap[pureconfig.error.ConfigReaderFailures, Double](((x$17: pureconfig.ConfigCursor) => x$17.asDouble)).right.map[Seq[Double]](((ymax: Double) => scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)))
267 62265 11959 - 11986 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Double](xmin, ymin, xmax, ymax)
273 62291 12018 - 12643 Apply scala.util.Either.RightProjection.flatMap cur.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((obj: pureconfig.ConfigObjectCursor) => obj.atKey("name").right.flatMap[pureconfig.error.ConfigReaderFailures, String](((x$18: pureconfig.ConfigCursor) => x$18.asString)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((name: String) => obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.PartitionActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => obj.atKey("files").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$19: pureconfig.ConfigCursor) => x$19.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$20: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$20)(`package`.this.StorageFileVerboseReader))).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => obj.atKey("count").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))))))))))))
274 62272 12091 - 12097 Literal <nosymbol> "name"
274 62273 12113 - 12123 Select pureconfig.ConfigCursor.asString x$18.asString
274 62290 12071 - 12643 Apply scala.util.Either.RightProjection.flatMap obj.atKey("name").right.flatMap[pureconfig.error.ConfigReaderFailures, String](((x$18: pureconfig.ConfigCursor) => x$18.asString)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((name: String) => obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.PartitionActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => obj.atKey("files").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$19: pureconfig.ConfigCursor) => x$19.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$20: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$20)(`package`.this.StorageFileVerboseReader))).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => obj.atKey("count").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))))))))))
275 62274 12157 - 12165 Literal <nosymbol> "action"
275 62275 12181 - 12207 Apply org.locationtech.geomesa.fs.storage.common.metadata.EnumerationReader.from `package`.this.PartitionActionReader.from(cur)
275 62289 12137 - 12643 Apply scala.util.Either.RightProjection.flatMap obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.PartitionActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((action: org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionAction.Value) => obj.atKey("files").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$19: pureconfig.ConfigCursor) => x$19.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$20: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$20)(`package`.this.StorageFileVerboseReader))).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => obj.atKey("count").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))))))))
276 62276 12241 - 12248 Literal <nosymbol> "files"
276 62277 12264 - 12278 Select pureconfig.ConfigCursor.asListCursor x$19.asListCursor
276 62278 12309 - 12333 Select org.locationtech.geomesa.fs.storage.common.metadata.StorageFileVerboseReader `package`.this.StorageFileVerboseReader
276 62279 12294 - 12334 Apply org.locationtech.geomesa.fs.storage.common.metadata.convertList `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$20)(`package`.this.StorageFileVerboseReader)
276 62288 12221 - 12643 Apply scala.util.Either.RightProjection.flatMap obj.atKey("files").right.flatMap[pureconfig.error.ConfigReaderFailures, pureconfig.ConfigListCursor](((x$19: pureconfig.ConfigCursor) => x$19.asListCursor)).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]](((x$20: pureconfig.ConfigListCursor) => `package`.this.convertList[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](x$20)(`package`.this.StorageFileVerboseReader))).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((files: Seq[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile]) => obj.atKey("count").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))))))
277 62280 12368 - 12375 Literal <nosymbol> "count"
277 62281 12391 - 12425 Apply pureconfig.ConfigReader.from pureconfig.ConfigReader.longConfigReader.from(cur)
277 62287 12348 - 12643 Apply scala.util.Either.RightProjection.flatMap obj.atKey("count").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((count: Long) => readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))))
278 62286 12439 - 12643 Apply scala.util.Either.RightProjection.flatMap readEnvelope(obj).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((bounds: Seq[Double]) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))))
279 62282 12499 - 12510 Literal <nosymbol> "timestamp"
279 62283 12526 - 12560 Apply pureconfig.ConfigReader.from pureconfig.ConfigReader.longConfigReader.from(cur)
279 62285 12479 - 12643 Apply scala.util.Either.RightProjection.map obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.map[org.locationtech.geomesa.fs.storage.common.metadata.package.PartitionConfig](((ts: Long) => `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)))
281 62284 12588 - 12643 Apply org.locationtech.geomesa.fs.storage.common.metadata.PartitionConfig.apply `package`.this.PartitionConfig.apply(name, action, files, count, bounds, ts)
286 62292 12744 - 12778 Apply java.util.ArrayList.<init> new java.util.ArrayList[AnyRef](5)
287 62293 12792 - 12801 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.name file.name
287 62294 12783 - 12802 Apply java.util.ArrayList.add list.add(file.name)
288 62295 12816 - 12844 Apply scala.collection.IndexedSeqOptimized.take scala.Predef.augmentString(file.action.toString()).take(1)
288 62296 12807 - 12845 Apply java.util.ArrayList.add list.add(scala.Predef.augmentString(file.action.toString()).take(1))
289 62297 12868 - 12882 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.timestamp file.timestamp
289 62298 12859 - 12883 Apply scala.Long.box scala.Long.box(file.timestamp)
289 62299 12850 - 12884 Apply java.util.ArrayList.add list.add(scala.Long.box(file.timestamp))
290 62300 12893 - 12911 Select scala.collection.TraversableOnce.nonEmpty file.sort.nonEmpty
290 62305 12889 - 12889 Literal <nosymbol> ()
290 62306 12889 - 12889 Block <nosymbol> ()
291 62301 12930 - 12939 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.sort file.sort
291 62302 12930 - 12946 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava
291 62303 12921 - 12947 Apply java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava)
291 62304 12921 - 12947 Block java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava)
293 62307 12962 - 12982 Select scala.collection.TraversableOnce.nonEmpty file.bounds.nonEmpty
293 62316 12958 - 12958 Literal <nosymbol> ()
293 62317 12958 - 12958 Block <nosymbol> ()
294 62308 13037 - 13049 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Any](a, f, t)
294 62309 13037 - 13056 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava
294 62310 13037 - 13056 Block scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava
294 62311 13017 - 13017 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[java.util.List[Any]]
294 62312 13001 - 13058 ApplyToImplicitArgs scala.collection.TraversableLike.map file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])
294 62313 13001 - 13065 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava
294 62314 12992 - 13066 Apply java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava)
294 62315 12992 - 13066 Block java.util.ArrayList.add list.add(scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava)
296 62318 13077 - 13114 Apply com.typesafe.config.ConfigValueFactory.fromIterable com.typesafe.config.ConfigValueFactory.fromIterable(list)
300 62319 13208 - 13248 Apply java.util.HashMap.<init> new java.util.HashMap[String,AnyRef](5)
301 62320 13261 - 13267 Literal <nosymbol> "name"
301 62321 13269 - 13278 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.name file.name
301 62322 13253 - 13279 Apply java.util.HashMap.put map.put("name", file.name)
302 62323 13292 - 13303 Literal <nosymbol> "timestamp"
302 62324 13314 - 13328 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.timestamp file.timestamp
302 62325 13305 - 13329 Apply scala.Long.box scala.Long.box(file.timestamp)
302 62326 13284 - 13330 Apply java.util.HashMap.put map.put("timestamp", scala.Long.box(file.timestamp))
303 62327 13343 - 13351 Literal <nosymbol> "action"
303 62328 13353 - 13373 Apply java.lang.Object.toString file.action.toString()
303 62329 13335 - 13374 Apply java.util.HashMap.put map.put("action", file.action.toString())
304 62330 13383 - 13401 Select scala.collection.TraversableOnce.nonEmpty file.sort.nonEmpty
304 62336 13379 - 13379 Literal <nosymbol> ()
304 62337 13379 - 13379 Block <nosymbol> ()
305 62331 13419 - 13425 Literal <nosymbol> "sort"
305 62332 13427 - 13436 Select org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.sort file.sort
305 62333 13427 - 13443 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava
305 62334 13411 - 13444 Apply java.util.HashMap.put map.put("sort", scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava)
305 62335 13411 - 13444 Block java.util.HashMap.put map.put("sort", scala.collection.JavaConverters.seqAsJavaListConverter[Int](file.sort).asJava)
307 62338 13459 - 13479 Select scala.collection.TraversableOnce.nonEmpty file.bounds.nonEmpty
307 62348 13455 - 13455 Literal <nosymbol> ()
307 62349 13455 - 13455 Block <nosymbol> ()
308 62339 13497 - 13505 Literal <nosymbol> "bounds"
308 62340 13543 - 13555 Apply scala.collection.generic.GenericCompanion.apply scala.collection.Seq.apply[Any](a, f, t)
308 62341 13543 - 13562 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava
308 62342 13543 - 13562 Block scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava
308 62343 13523 - 13523 TypeApply scala.collection.Seq.canBuildFrom collection.this.Seq.canBuildFrom[java.util.List[Any]]
308 62344 13507 - 13564 ApplyToImplicitArgs scala.collection.TraversableLike.map file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])
308 62345 13507 - 13571 Select scala.collection.convert.Decorators.AsJava.asJava scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava
308 62346 13489 - 13572 Apply java.util.HashMap.put map.put("bounds", scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava)
308 62347 13489 - 13572 Block java.util.HashMap.put map.put("bounds", scala.collection.JavaConverters.seqAsJavaListConverter[java.util.List[Any]](file.bounds.map[java.util.List[Any], Seq[java.util.List[Any]]](((x0$1: (Int, String, String)) => x0$1 match { case (_1: Int, _2: String, _3: String)(Int, String, String)((a @ _), (f @ _), (t @ _)) => scala.collection.JavaConverters.seqAsJavaListConverter[Any](scala.collection.Seq.apply[Any](a, f, t)).asJava }))(collection.this.Seq.canBuildFrom[java.util.List[Any]])).asJava)
310 62350 13583 - 13614 Apply com.typesafe.config.ConfigValueFactory.fromMap com.typesafe.config.ConfigValueFactory.fromMap(map)
314 62376 13727 - 14472 Apply scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((list: pureconfig.ConfigListCursor) => if (list.size.<(3).||(list.size.>(5))) cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$21: com.typesafe.config.ConfigValue) => x$21.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.api.StorageMetadata$$StorageFile].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected number of elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))) else list.atIndexOrUndefined(0).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => `package`.this.StorageFileActionReader.from(list.atIndexOrUndefined(1)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => list.atIndexOrUndefined(2).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))))))
315 62351 13790 - 13791 Literal <nosymbol> 3
315 62352 13795 - 13808 Apply scala.Int.> list.size.>(5)
315 62353 13778 - 13808 Apply scala.Boolean.|| list.size.<(3).||(list.size.>(5))
316 62354 13845 - 13887 Apply scala.Option.getOrElse cur.valueOpt.map[String](((x$21: com.typesafe.config.ConfigValue) => x$21.toString())).getOrElse[String]("")
316 62361 13831 - 14013 Apply pureconfig.error.CannotConvert.apply pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$21: com.typesafe.config.ConfigValue) => x$21.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.api.StorageMetadata$$StorageFile].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected number of elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))
316 62362 13820 - 14014 Apply pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$21: com.typesafe.config.ConfigValue) => x$21.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.api.StorageMetadata$$StorageFile].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected number of elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
316 62363 13820 - 14014 Block pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$21: com.typesafe.config.ConfigValue) => x$21.toString())).getOrElse[String](""), classOf[org.locationtech.geomesa.fs.storage.api.StorageMetadata$$StorageFile].getSimpleName(), scala.StringContext.apply("value ", " does not have the expected number of elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
317 62355 13899 - 13933 Apply java.lang.Class.getSimpleName classOf[org.locationtech.geomesa.fs.storage.api.StorageMetadata$$StorageFile].getSimpleName()
317 62356 13937 - 13944 Literal <nosymbol> "value "
317 62357 13965 - 14012 Literal <nosymbol> " does not have the expected number of elements"
317 62358 13958 - 13958 TypeApply scala.Predef.$conforms scala.Predef.$conforms[Null]
317 62359 13945 - 13964 ApplyToImplicitArgs scala.Option.orNull cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])
317 62360 13935 - 14012 Apply scala.StringContext.s scala.StringContext.apply("value ", " does not have the expected number of elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))
320 62364 14088 - 14089 Literal <nosymbol> 0
320 62374 14038 - 14448 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(0).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => `package`.this.StorageFileActionReader.from(list.atIndexOrUndefined(1)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => list.atIndexOrUndefined(2).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))))
320 62375 14038 - 14448 Block scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(0).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => `package`.this.StorageFileActionReader.from(list.atIndexOrUndefined(1)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => list.atIndexOrUndefined(2).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))))
321 62365 14155 - 14181 Apply pureconfig.ConfigListCursor.atIndexOrUndefined list.atIndexOrUndefined(1)
321 62373 14116 - 14448 Apply scala.util.Either.RightProjection.flatMap `package`.this.StorageFileActionReader.from(list.atIndexOrUndefined(1)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => list.atIndexOrUndefined(2).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))
322 62366 14233 - 14234 Literal <nosymbol> 2
322 62372 14199 - 14448 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(2).asLong.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))
323 62367 14278 - 14304 Apply pureconfig.ConfigListCursor.atIndexOrUndefined list.atIndexOrUndefined(3)
323 62371 14259 - 14448 Apply scala.util.Either.RightProjection.flatMap `package`.this.readSort(list.atIndexOrUndefined(3)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))
324 62368 14343 - 14369 Apply pureconfig.ConfigListCursor.atIndexOrUndefined list.atIndexOrUndefined(4)
324 62370 14322 - 14448 Apply scala.util.Either.RightProjection.map `package`.this.readBounds(list.atIndexOrUndefined(4)).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))
326 62369 14405 - 14448 Apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)
334 62391 14602 - 15085 Apply scala.util.Either.RightProjection.flatMap cur.asObjectCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((obj: pureconfig.ConfigObjectCursor) => obj.atKey("name").right.flatMap[pureconfig.error.ConfigReaderFailures, String](((x$22: pureconfig.ConfigCursor) => x$22.asString)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.StorageFileActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => `package`.this.readSort(obj.atKeyOrUndefined("sort")).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))))))
335 62377 14675 - 14681 Literal <nosymbol> "name"
335 62378 14697 - 14707 Select pureconfig.ConfigCursor.asString x$22.asString
335 62390 14655 - 15085 Apply scala.util.Either.RightProjection.flatMap obj.atKey("name").right.flatMap[pureconfig.error.ConfigReaderFailures, String](((x$22: pureconfig.ConfigCursor) => x$22.asString)).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.StorageFileActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => `package`.this.readSort(obj.atKeyOrUndefined("sort")).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))))
336 62379 14741 - 14752 Literal <nosymbol> "timestamp"
336 62380 14768 - 14802 Apply pureconfig.ConfigReader.from pureconfig.ConfigReader.longConfigReader.from(cur)
336 62389 14721 - 15085 Apply scala.util.Either.RightProjection.flatMap obj.atKey("timestamp").right.flatMap[pureconfig.error.ConfigReaderFailures, Long]({ ((cur: pureconfig.ConfigCursor) => pureconfig.ConfigReader.longConfigReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((ts: Long) => obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.StorageFileActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => `package`.this.readSort(obj.atKeyOrUndefined("sort")).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))))
337 62381 14836 - 14844 Literal <nosymbol> "action"
337 62382 14860 - 14888 Apply org.locationtech.geomesa.fs.storage.common.metadata.EnumerationReader.from `package`.this.StorageFileActionReader.from(cur)
337 62388 14816 - 15085 Apply scala.util.Either.RightProjection.flatMap obj.atKey("action").right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value]({ ((cur: pureconfig.ConfigCursor) => `package`.this.StorageFileActionReader.from(cur)) }).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((action: org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFileAction.Value) => `package`.this.readSort(obj.atKeyOrUndefined("sort")).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))))
338 62383 14921 - 14949 Apply pureconfig.ConfigObjectCursor.atKeyOrUndefined obj.atKeyOrUndefined("sort")
338 62387 14902 - 15085 Apply scala.util.Either.RightProjection.flatMap `package`.this.readSort(obj.atKeyOrUndefined("sort")).right.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((sort: Seq[Int]) => `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))))
339 62384 14984 - 15014 Apply pureconfig.ConfigObjectCursor.atKeyOrUndefined obj.atKeyOrUndefined("bounds")
339 62386 14963 - 15085 Apply scala.util.Either.RightProjection.map `package`.this.readBounds(obj.atKeyOrUndefined("bounds")).right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((bounds: Seq[(Int, String, String)]) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)))
341 62385 15042 - 15085 Apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, ts, action, sort, bounds)
343 62392 15100 - 15118 Select scala.util.Either.isRight withAction.isRight
343 62393 15122 - 15132 Ident org.locationtech.geomesa.fs.storage.common.metadata.package.withAction withAction
343 62398 15140 - 15386 Block <nosymbol> { val sansAction: scala.util.Either[pureconfig.error.ConfigReaderFailures,org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile] = cur.asString.right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, 0L, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$3, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$4, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$5))); sansAction.left.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((x$23: pureconfig.error.ConfigReaderFailures) => withAction)) }
345 62394 15285 - 15287 Literal <nosymbol> 0L
345 62395 15267 - 15288 Apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, 0L, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$3, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$4, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$5)
345 62396 15224 - 15288 Apply scala.util.Either.RightProjection.map cur.asString.right.map[org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((name: String) => org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply(name, 0L, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$3, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$4, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile.apply$default$5)))
346 62397 15297 - 15337 Apply scala.util.Either.LeftProjection.flatMap sansAction.left.flatMap[pureconfig.error.ConfigReaderFailures, org.locationtech.geomesa.fs.storage.api.StorageMetadata.StorageFile](((x$23: pureconfig.error.ConfigReaderFailures) => withAction))
351 62399 15512 - 15512 Select pureconfig.PrimitiveReaders.doubleConfigReader pureconfig.this.ConfigReader.doubleConfigReader
351 62414 15493 - 15804 Apply scala.util.Either.RightProjection.flatMap `package`.this.convertList[Double](env)(pureconfig.this.ConfigReader.doubleConfigReader).right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Double]](((coords: Seq[Double]) => if (coords.isEmpty.||(coords.length.==(4))) scala.`package`.Right.apply[Nothing, Seq[Double]](coords) else env.failed[Nothing](pureconfig.error.CannotConvert.apply(env.valueOpt.map[String](((x$24: com.typesafe.config.ConfigList) => x$24.toString())).getOrElse[String](""), "Seq[Double]", scala.StringContext.apply("value ", " does not have the expected 4 elements").s(env.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))))
352 62400 15572 - 15590 Apply scala.Int.== coords.length.==(4)
352 62401 15554 - 15590 Apply scala.Boolean.|| coords.isEmpty.||(coords.length.==(4))
352 62402 15594 - 15607 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Double]](coords)
352 62403 15594 - 15607 Block scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Double]](coords)
353 62404 15650 - 15692 Apply scala.Option.getOrElse env.valueOpt.map[String](((x$24: com.typesafe.config.ConfigList) => x$24.toString())).getOrElse[String]("")
353 62411 15636 - 15789 Apply pureconfig.error.CannotConvert.apply pureconfig.error.CannotConvert.apply(env.valueOpt.map[String](((x$24: com.typesafe.config.ConfigList) => x$24.toString())).getOrElse[String](""), "Seq[Double]", scala.StringContext.apply("value ", " does not have the expected 4 elements").s(env.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))
353 62412 15625 - 15790 Apply pureconfig.ConfigCursor.failed env.failed[Nothing](pureconfig.error.CannotConvert.apply(env.valueOpt.map[String](((x$24: com.typesafe.config.ConfigList) => x$24.toString())).getOrElse[String](""), "Seq[Double]", scala.StringContext.apply("value ", " does not have the expected 4 elements").s(env.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
353 62413 15625 - 15790 Block pureconfig.ConfigCursor.failed env.failed[Nothing](pureconfig.error.CannotConvert.apply(env.valueOpt.map[String](((x$24: com.typesafe.config.ConfigList) => x$24.toString())).getOrElse[String](""), "Seq[Double]", scala.StringContext.apply("value ", " does not have the expected 4 elements").s(env.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
354 62405 15704 - 15717 Literal <nosymbol> "Seq[Double]"
354 62406 15721 - 15728 Literal <nosymbol> "value "
354 62407 15749 - 15788 Literal <nosymbol> " does not have the expected 4 elements"
354 62408 15742 - 15742 TypeApply scala.Predef.$conforms scala.Predef.$conforms[Null]
354 62409 15729 - 15748 ApplyToImplicitArgs scala.Option.orNull env.valueOpt.orNull[Any](scala.Predef.$conforms[Null])
354 62410 15719 - 15788 Apply scala.StringContext.s scala.StringContext.apply("value ", " does not have the expected 4 elements").s(env.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))
360 62415 15902 - 15917 Select pureconfig.ConfigCursor.isUndefined cur.isUndefined
360 62416 15927 - 15936 TypeApply scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
360 62417 15921 - 15937 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
360 62418 15921 - 15937 Block scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
360 62419 15989 - 15989 Select pureconfig.PrimitiveReaders.intConfigReader pureconfig.this.ConfigReader.intConfigReader
360 62420 15978 - 15994 ApplyToImplicitArgs org.locationtech.geomesa.fs.storage.common.metadata.convertList `package`.this.convertList[Int](list)(pureconfig.this.ConfigReader.intConfigReader)
360 62421 15947 - 15995 Apply scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Int]]({ ((list: pureconfig.ConfigListCursor) => `package`.this.convertList[Int](list)(pureconfig.this.ConfigReader.intConfigReader)) })
360 62422 15947 - 15995 Block scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[Int]]({ ((list: pureconfig.ConfigListCursor) => `package`.this.convertList[Int](list)(pureconfig.this.ConfigReader.intConfigReader)) })
363 62423 16111 - 16126 Select pureconfig.ConfigCursor.isUndefined cur.isUndefined
363 62424 16136 - 16145 TypeApply scala.collection.generic.GenericCompanion.empty scala.collection.Seq.empty[Nothing]
363 62425 16130 - 16146 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
363 62426 16130 - 16146 Block scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[Nothing]](scala.collection.Seq.empty[Nothing])
363 62427 16202 - 16213 Select org.locationtech.geomesa.fs.storage.common.metadata.BoundReader `package`.this.BoundReader
363 62428 16187 - 16214 Apply org.locationtech.geomesa.fs.storage.common.metadata.convertList `package`.this.convertList[(Int, String, String)](x$25)(`package`.this.BoundReader)
363 62429 16156 - 16215 Apply scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[(Int, String, String)]](((x$25: pureconfig.ConfigListCursor) => `package`.this.convertList[(Int, String, String)](x$25)(`package`.this.BoundReader)))
363 62430 16156 - 16215 Block scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, Seq[(Int, String, String)]](((x$25: pureconfig.ConfigListCursor) => `package`.this.convertList[(Int, String, String)](x$25)(`package`.this.BoundReader)))
366 62450 16323 - 16863 Apply scala.util.Either.RightProjection.flatMap cur.asListCursor.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((list: pureconfig.ConfigListCursor) => if (list.size.!=(3)) cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$26: com.typesafe.config.ConfigValue) => x$26.toString())).getOrElse[String](""), "Tuple3[Int, String, String]", scala.StringContext.apply("value ", " does not have 3 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))) else list.atIndexOrUndefined(0).asInt.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((attribute: Int) => list.atIndexOrUndefined(1).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((from: String) => list.atIndexOrUndefined(2).asString.right.map[(Int, String, String)](((to: String) => scala.Tuple3.apply[Int, String, String](attribute, from, to)))))))))
367 62431 16374 - 16388 Apply scala.Int.!= list.size.!=(3)
368 62432 16425 - 16467 Apply scala.Option.getOrElse cur.valueOpt.map[String](((x$26: com.typesafe.config.ConfigValue) => x$26.toString())).getOrElse[String]("")
368 62439 16411 - 16567 Apply pureconfig.error.CannotConvert.apply pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$26: com.typesafe.config.ConfigValue) => x$26.toString())).getOrElse[String](""), "Tuple3[Int, String, String]", scala.StringContext.apply("value ", " does not have 3 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])))
368 62440 16400 - 16568 Apply pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$26: com.typesafe.config.ConfigValue) => x$26.toString())).getOrElse[String](""), "Tuple3[Int, String, String]", scala.StringContext.apply("value ", " does not have 3 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
368 62441 16400 - 16568 Block pureconfig.ConfigCursor.failed cur.failed[Nothing](pureconfig.error.CannotConvert.apply(cur.valueOpt.map[String](((x$26: com.typesafe.config.ConfigValue) => x$26.toString())).getOrElse[String](""), "Tuple3[Int, String, String]", scala.StringContext.apply("value ", " does not have 3 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))))
369 62433 16479 - 16508 Literal <nosymbol> "Tuple3[Int, String, String]"
369 62434 16512 - 16519 Literal <nosymbol> "value "
369 62435 16540 - 16566 Literal <nosymbol> " does not have 3 elements"
369 62436 16533 - 16533 TypeApply scala.Predef.$conforms scala.Predef.$conforms[Null]
369 62437 16520 - 16539 ApplyToImplicitArgs scala.Option.orNull cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null])
369 62438 16510 - 16566 Apply scala.StringContext.s scala.StringContext.apply("value ", " does not have 3 elements").s(cur.valueOpt.orNull[Any](scala.Predef.$conforms[Null]))
372 62442 16645 - 16646 Literal <nosymbol> 0
372 62448 16592 - 16839 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(0).asInt.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((attribute: Int) => list.atIndexOrUndefined(1).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((from: String) => list.atIndexOrUndefined(2).asString.right.map[(Int, String, String)](((to: String) => scala.Tuple3.apply[Int, String, String](attribute, from, to)))))))
372 62449 16592 - 16839 Block scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(0).asInt.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((attribute: Int) => list.atIndexOrUndefined(1).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((from: String) => list.atIndexOrUndefined(2).asString.right.map[(Int, String, String)](((to: String) => scala.Tuple3.apply[Int, String, String](attribute, from, to)))))))
373 62443 16707 - 16708 Literal <nosymbol> 1
373 62447 16670 - 16839 Apply scala.util.Either.RightProjection.flatMap list.atIndexOrUndefined(1).asString.right.flatMap[pureconfig.error.ConfigReaderFailures, (Int, String, String)](((from: String) => list.atIndexOrUndefined(2).asString.right.map[(Int, String, String)](((to: String) => scala.Tuple3.apply[Int, String, String](attribute, from, to)))))
374 62444 16772 - 16773 Literal <nosymbol> 2
374 62446 16735 - 16839 Apply scala.util.Either.RightProjection.map list.atIndexOrUndefined(2).asString.right.map[(Int, String, String)](((to: String) => scala.Tuple3.apply[Int, String, String](attribute, from, to)))
376 62445 16818 - 16839 Apply scala.Tuple3.apply scala.Tuple3.apply[Int, String, String](attribute, from, to)
385 62451 17025 - 17042 TypeApply scala.collection.Seq.newBuilder scala.collection.Seq.newBuilder[T]
386 62452 17079 - 17083 Literal <nosymbol> null
387 62453 17096 - 17097 Literal <nosymbol> 0
388 62454 17113 - 17122 Select pureconfig.ConfigListCursor.size list.size
388 62455 17109 - 17122 Apply scala.Int.< i.<(list.size)
388 62466 17124 - 17124 Apply org.locationtech.geomesa.fs.storage.common.metadata.package.while$1 while$1()
388 62467 17124 - 17348 Block <nosymbol> { { reader.from(list.atIndexOrUndefined(i)) match { case (value: T)scala.util.Right[pureconfig.error.ConfigReaderFailures,T]((success @ _)) => res.+=(success) case (value: pureconfig.error.ConfigReaderFailures)scala.util.Left[pureconfig.error.ConfigReaderFailures,T]((failure @ _)) => if (err.==(null)) err = failure else err = err.++(failure) }; i = i.+(1) }; while$1() }
388 62468 17102 - 17102 Literal <nosymbol> ()
388 62469 17102 - 17102 Block <nosymbol> ()
389 62456 17144 - 17170 Apply pureconfig.ConfigListCursor.atIndexOrUndefined list.atIndexOrUndefined(i)
389 62457 17132 - 17171 Apply pureconfig.ConfigReader.from reader.from(list.atIndexOrUndefined(i))
390 62458 17211 - 17225 Apply scala.collection.mutable.Builder.+= res.+=(success)
390 62459 17211 - 17225 Block scala.collection.mutable.Builder.+= res.+=(success)
391 62460 17261 - 17272 Apply java.lang.Object.== err.==(null)
391 62461 17276 - 17289 Assign <nosymbol> err = failure
391 62462 17305 - 17319 Apply pureconfig.error.ConfigReaderFailures.++ err.++(failure)
391 62463 17299 - 17319 Assign <nosymbol> err = err.++(failure)
391 62464 17257 - 17321 If <nosymbol> if (err.==(null)) err = failure else err = err.++(failure)
393 62465 17336 - 17342 Apply scala.Int.+ i.+(1)
395 62470 17357 - 17368 Apply java.lang.Object.== err.==(null)
395 62471 17378 - 17388 Apply scala.collection.mutable.Builder.result res.result()
395 62472 17372 - 17389 Apply scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[T]](res.result())
395 62473 17372 - 17389 Block scala.util.Right.apply scala.`package`.Right.apply[Nothing, Seq[T]](res.result())
395 62474 17399 - 17408 Apply scala.util.Left.apply scala.`package`.Left.apply[pureconfig.error.ConfigReaderFailures, Nothing](err)
395 62475 17399 - 17408 Block scala.util.Left.apply scala.`package`.Left.apply[pureconfig.error.ConfigReaderFailures, Nothing](err)