// Path: src/main/java/com/wdtinc/mapbox_vector_tile/build/MvtLayerParams.java
// public final class MvtLayerParams {
// 
//     /**
//      * Default layer parameters created using {@link #MvtLayerParams()}.
//      */
//     public static final MvtLayerParams DEFAULT = new MvtLayerParams();
// 
// 
//     /**
//      * the resolution of the tile in 'pixel' dimensions.
//      */
//     public final int tileSize;
// 
//     /**
//      * the resolution of the MVT local coordinate system.
//      */
//     public final int extent;
// 
//     /**
//      * ratio of tile 'pixel' dimensions to tile extent dimensions.
//      */
//     public final float ratio;
// 
//     /**
//      * Construct default layer sizing parameters for MVT creation.
//      *
//      * <p>Uses defaults:</p>
//      * <ul>
//      *     <li>{@link #tileSize} = 256</li>
//      *     <li>{@link #extent} = 4096</li>
//      * </ul>
//      *
//      * @see #MvtLayerParams(int, int)
//      */
//     public MvtLayerParams() {
//         this(256, 4096);
//     }
// 
//     /**
//      * Construct layer sizing parameters for MVT creation.
//      *
//      * @param tileSize the resolution of the tile in pixel coordinates, must be &gt; 0
//      * @param extent   the resolution of the MVT local coordinate system, must be &gt; 0
//      */
//     public MvtLayerParams(int tileSize, int extent) {
//         if(tileSize <= 0) {
//             throw new IllegalArgumentException("tileSize must be > 0");
//         }
// 
//         if(extent <= 0) {
//             throw new IllegalArgumentException("extent must be > 0");
//         }
// 
//         this.tileSize = tileSize;
//         this.extent = extent;
//         this.ratio = extent / (float) tileSize;
//     }
// }
// 
// Path: src/main/java/com/wdtinc/mapbox_vector_tile/util/JdkUtils.java
// public final class JdkUtils {
// 
//     private JdkUtils() {}
// 
//     /**
//      * Backwards compatible {@link Map#putIfAbsent} to support &lt; Android API 24.
//      *
//      * If the specified key is not already associated with a value (or is mapped
//      * to {@code null}) associates it with the given value and returns
//      * {@code null}, else returns the current value.
//      *
//      * @param key key with which the specified value is to be associated
//      * @param value value to be associated with the specified key
//      * @return the previous value associated with the specified key, or
//      *         {@code null} if there was no mapping for the key.
//      */
//     public static <K,V> V putIfAbsent(Map<K,V> map, K key, V value) {
//         V val = map.get(key);
//         if (val == null) {
//             val = map.put(key, value);
//         }
//         return val;
//     }
// 
//     /**
//      * This method mimics the behavior of Objects.requireNonNull method to allow
//      * Android API level 15 backward compatibility.
//      *
//      * @param object
//      * @return object
//      * @throws NullPointerException if object is null
//      */
//     public static <T> T requireNonNull(T object) {
//         if (object == null)
//             throw new NullPointerException();
//         return object;
//     }
// 
// }


import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import com.wdtinc.mapbox_vector_tile.build.MvtLayerParams;
import com.wdtinc.mapbox_vector_tile.util.JdkUtils;
import java.util.List;
package com.wdtinc.mapbox_vector_tile.adapt.jts;



/**
 * Processing result containing intersection geometry and MVT geometry.
 *
 * @see JtsAdapter#createTileGeom(Geometry, Envelope, GeometryFactory, MvtLayerParams, IGeometryFilter)
 */
public final class TileGeomResult {

    /**
     * Intersection geometry (projection units and coordinates).
     */
    public final List<Geometry> intGeoms;

    /**
     * Geometry in MVT coordinates (tile extent units, screen coordinates).
     */
    public final List<Geometry> mvtGeoms;

    /**
     * Create TileGeomResult, which contains the intersection of geometry and MVT geometry.
     *
     * @param intGeoms geometry intersecting tile
     * @param mvtGeoms geometry for MVT
     * @throws NullPointerException if intGeoms or mvtGeoms are null
     */
    public TileGeomResult(List<Geometry> intGeoms, List<Geometry> mvtGeoms) {
        JdkUtils.requireNonNull(intGeoms);
// Path: src/main/java/com/wdtinc/mapbox_vector_tile/build/MvtLayerParams.java
// public final class MvtLayerParams {
// 
//     /**
//      * Default layer parameters created using {@link #MvtLayerParams()}.
//      */
//     public static final MvtLayerParams DEFAULT = new MvtLayerParams();
// 
// 
//     /**
//      * the resolution of the tile in 'pixel' dimensions.
//      */
//     public final int tileSize;
// 
//     /**
//      * the resolution of the MVT local coordinate system.
//      */
//     public final int extent;
// 
//     /**
//      * ratio of tile 'pixel' dimensions to tile extent dimensions.
//      */
//     public final float ratio;
// 
//     /**
//      * Construct default layer sizing parameters for MVT creation.
//      *
//      * <p>Uses defaults:</p>
//      * <ul>
//      *     <li>{@link #tileSize} = 256</li>
//      *     <li>{@link #extent} = 4096</li>
//      * </ul>
//      *
//      * @see #MvtLayerParams(int, int)
//      */
//     public MvtLayerParams() {
//         this(256, 4096);
//     }
// 
//     /**
//      * Construct layer sizing parameters for MVT creation.
//      *
//      * @param tileSize the resolution of the tile in pixel coordinates, must be &gt; 0
//      * @param extent   the resolution of the MVT local coordinate system, must be &gt; 0
//      */
//     public MvtLayerParams(int tileSize, int extent) {
//         if(tileSize <= 0) {
//             throw new IllegalArgumentException("tileSize must be > 0");
//         }
// 
//         if(extent <= 0) {
//             throw new IllegalArgumentException("extent must be > 0");
//         }
// 
//         this.tileSize = tileSize;
//         this.extent = extent;
//         this.ratio = extent / (float) tileSize;
//     }
// }
// 
// Path: src/main/java/com/wdtinc/mapbox_vector_tile/util/JdkUtils.java
// public final class JdkUtils {
// 
//     private JdkUtils() {}
// 
//     /**
//      * Backwards compatible {@link Map#putIfAbsent} to support &lt; Android API 24.
//      *
//      * If the specified key is not already associated with a value (or is mapped
//      * to {@code null}) associates it with the given value and returns
//      * {@code null}, else returns the current value.
//      *
//      * @param key key with which the specified value is to be associated
//      * @param value value to be associated with the specified key
//      * @return the previous value associated with the specified key, or
//      *         {@code null} if there was no mapping for the key.
//      */
//     public static <K,V> V putIfAbsent(Map<K,V> map, K key, V value) {
//         V val = map.get(key);
//         if (val == null) {
//             val = map.put(key, value);
//         }
//         return val;
//     }
// 
//     /**
//      * This method mimics the behavior of Objects.requireNonNull method to allow
//      * Android API level 15 backward compatibility.
//      *
//      * @param object
//      * @return object
//      * @throws NullPointerException if object is null
//      */
//     public static <T> T requireNonNull(T object) {
//         if (object == null)
//             throw new NullPointerException();
//         return object;
//     }
// 
// }


// Path: src/main/java/com/wdtinc/mapbox_vector_tile/adapt/jts/TileGeomResult.java
import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import com.wdtinc.mapbox_vector_tile.build.MvtLayerParams;
import com.wdtinc.mapbox_vector_tile.util.JdkUtils;
import java.util.List;

package com.wdtinc.mapbox_vector_tile.adapt.jts;



/**
 * Processing result containing intersection geometry and MVT geometry.
 *
 * @see JtsAdapter#createTileGeom(Geometry, Envelope, GeometryFactory, MvtLayerParams, IGeometryFilter)
 */
public final class TileGeomResult {

    /**
     * Intersection geometry (projection units and coordinates).
     */
    public final List<Geometry> intGeoms;

    /**
     * Geometry in MVT coordinates (tile extent units, screen coordinates).
     */
    public final List<Geometry> mvtGeoms;

    /**
     * Create TileGeomResult, which contains the intersection of geometry and MVT geometry.
     *
     * @param intGeoms geometry intersecting tile
     * @param mvtGeoms geometry for MVT
     * @throws NullPointerException if intGeoms or mvtGeoms are null
     */
    public TileGeomResult(List<Geometry> intGeoms, List<Geometry> mvtGeoms) {
        JdkUtils.requireNonNull(intGeoms);
        JdkUtils.requireNonNull(mvtGeoms);