// Generated by delombok at Sun Nov 06 21:17:29 CET 2022

import java.util.Map;

public class SingularMap<A, B> {
  private Map rawTypes;
  private Map<Integer, Float> integers;
  private Map<A, B> generics;
  private Map<? extends Number, ? extends String> extendsGenerics;

  public static void main(String[] args) {
  }

  @java.lang.SuppressWarnings("all")
  SingularMap(final Map rawTypes, final Map<Integer, Float> integers, final Map<A, B> generics, final Map<? extends Number, ? extends String> extendsGenerics) {
    this.rawTypes = rawTypes;
    this.integers = integers;
    this.generics = generics;
    this.extendsGenerics = extendsGenerics;
  }


  @java.lang.SuppressWarnings("all")
  public static class SingularMapBuilder<A, B> {
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<java.lang.Object> rawTypes$key;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<java.lang.Object> rawTypes$value;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<Integer> integers$key;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<Float> integers$value;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<A> generics$key;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<B> generics$value;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<Number> extendsGenerics$key;
    @java.lang.SuppressWarnings("all")
    private java.util.ArrayList<String> extendsGenerics$value;

    @java.lang.SuppressWarnings("all")
    SingularMapBuilder() {
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> rawType(final java.lang.Object rawTypeKey, final java.lang.Object rawTypeValue) {
      if (this.rawTypes$key == null) {
        this.rawTypes$key = new java.util.ArrayList<java.lang.Object>();
        this.rawTypes$value = new java.util.ArrayList<java.lang.Object>();
      }
      this.rawTypes$key.add(rawTypeKey);
      this.rawTypes$value.add(rawTypeValue);
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> rawTypes(final java.util.Map<?, ?> rawTypes) {
      if (rawTypes == null) {
        throw new java.lang.NullPointerException("rawTypes cannot be null");
      }
      if (this.rawTypes$key == null) {
        this.rawTypes$key = new java.util.ArrayList<java.lang.Object>();
        this.rawTypes$value = new java.util.ArrayList<java.lang.Object>();
      }
      for (final java.util.Map.Entry<?, ?> $lombokEntry : rawTypes.entrySet()) {
        this.rawTypes$key.add($lombokEntry.getKey());
        this.rawTypes$value.add($lombokEntry.getValue());
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> clearRawTypes() {
      if (this.rawTypes$key != null) {
        this.rawTypes$key.clear();
        this.rawTypes$value.clear();
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> integer(final Integer integerKey, final Float integerValue) {
      if (this.integers$key == null) {
        this.integers$key = new java.util.ArrayList<Integer>();
        this.integers$value = new java.util.ArrayList<Float>();
      }
      this.integers$key.add(integerKey);
      this.integers$value.add(integerValue);
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> integers(final java.util.Map<? extends Integer, ? extends Float> integers) {
      if (integers == null) {
        throw new java.lang.NullPointerException("integers cannot be null");
      }
      if (this.integers$key == null) {
        this.integers$key = new java.util.ArrayList<Integer>();
        this.integers$value = new java.util.ArrayList<Float>();
      }
      for (final java.util.Map.Entry<? extends Integer, ? extends Float> $lombokEntry : integers.entrySet()) {
        this.integers$key.add($lombokEntry.getKey());
        this.integers$value.add($lombokEntry.getValue());
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> clearIntegers() {
      if (this.integers$key != null) {
        this.integers$key.clear();
        this.integers$value.clear();
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> generic(final A genericKey, final B genericValue) {
      if (this.generics$key == null) {
        this.generics$key = new java.util.ArrayList<A>();
        this.generics$value = new java.util.ArrayList<B>();
      }
      this.generics$key.add(genericKey);
      this.generics$value.add(genericValue);
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> generics(final java.util.Map<? extends A, ? extends B> generics) {
      if (generics == null) {
        throw new java.lang.NullPointerException("generics cannot be null");
      }
      if (this.generics$key == null) {
        this.generics$key = new java.util.ArrayList<A>();
        this.generics$value = new java.util.ArrayList<B>();
      }
      for (final java.util.Map.Entry<? extends A, ? extends B> $lombokEntry : generics.entrySet()) {
        this.generics$key.add($lombokEntry.getKey());
        this.generics$value.add($lombokEntry.getValue());
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> clearGenerics() {
      if (this.generics$key != null) {
        this.generics$key.clear();
        this.generics$value.clear();
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> extendsGeneric(final Number extendsGenericKey, final String extendsGenericValue) {
      if (this.extendsGenerics$key == null) {
        this.extendsGenerics$key = new java.util.ArrayList<Number>();
        this.extendsGenerics$value = new java.util.ArrayList<String>();
      }
      this.extendsGenerics$key.add(extendsGenericKey);
      this.extendsGenerics$value.add(extendsGenericValue);
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> extendsGenerics(final java.util.Map<? extends Number, ? extends String> extendsGenerics) {
      if (extendsGenerics == null) {
        throw new java.lang.NullPointerException("extendsGenerics cannot be null");
      }
      if (this.extendsGenerics$key == null) {
        this.extendsGenerics$key = new java.util.ArrayList<Number>();
        this.extendsGenerics$value = new java.util.ArrayList<String>();
      }
      for (final java.util.Map.Entry<? extends Number, ? extends String> $lombokEntry : extendsGenerics.entrySet()) {
        this.extendsGenerics$key.add($lombokEntry.getKey());
        this.extendsGenerics$value.add($lombokEntry.getValue());
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap.SingularMapBuilder<A, B> clearExtendsGenerics() {
      if (this.extendsGenerics$key != null) {
        this.extendsGenerics$key.clear();
        this.extendsGenerics$value.clear();
      }
      return this;
    }

    @java.lang.SuppressWarnings("all")
    public SingularMap<A, B> build() {
      java.util.Map<java.lang.Object, java.lang.Object> rawTypes;
      switch (this.rawTypes$key == null ? 0 : this.rawTypes$key.size()) {
      case 0: 
        rawTypes = java.util.Collections.emptyMap();
        break;
      case 1: 
        rawTypes = java.util.Collections.singletonMap(this.rawTypes$key.get(0), this.rawTypes$value.get(0));
        break;
      default: 
        rawTypes = new java.util.LinkedHashMap<java.lang.Object, java.lang.Object>(this.rawTypes$key.size() < 1073741824 ? 1 + this.rawTypes$key.size() + (this.rawTypes$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
        for (int $i = 0; $i < this.rawTypes$key.size(); $i++) rawTypes.put(this.rawTypes$key.get($i), (java.lang.Object) this.rawTypes$value.get($i));
        rawTypes = java.util.Collections.unmodifiableMap(rawTypes);
      }
      java.util.Map<Integer, Float> integers;
      switch (this.integers$key == null ? 0 : this.integers$key.size()) {
      case 0: 
        integers = java.util.Collections.emptyMap();
        break;
      case 1: 
        integers = java.util.Collections.singletonMap(this.integers$key.get(0), this.integers$value.get(0));
        break;
      default: 
        integers = new java.util.LinkedHashMap<Integer, Float>(this.integers$key.size() < 1073741824 ? 1 + this.integers$key.size() + (this.integers$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
        for (int $i = 0; $i < this.integers$key.size(); $i++) integers.put(this.integers$key.get($i), (Float) this.integers$value.get($i));
        integers = java.util.Collections.unmodifiableMap(integers);
      }
      java.util.Map<A, B> generics;
      switch (this.generics$key == null ? 0 : this.generics$key.size()) {
      case 0: 
        generics = java.util.Collections.emptyMap();
        break;
      case 1: 
        generics = java.util.Collections.singletonMap(this.generics$key.get(0), this.generics$value.get(0));
        break;
      default: 
        generics = new java.util.LinkedHashMap<A, B>(this.generics$key.size() < 1073741824 ? 1 + this.generics$key.size() + (this.generics$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
        for (int $i = 0; $i < this.generics$key.size(); $i++) generics.put(this.generics$key.get($i), (B) this.generics$value.get($i));
        generics = java.util.Collections.unmodifiableMap(generics);
      }
      java.util.Map<Number, String> extendsGenerics;
      switch (this.extendsGenerics$key == null ? 0 : this.extendsGenerics$key.size()) {
      case 0: 
        extendsGenerics = java.util.Collections.emptyMap();
        break;
      case 1: 
        extendsGenerics = java.util.Collections.singletonMap(this.extendsGenerics$key.get(0), this.extendsGenerics$value.get(0));
        break;
      default: 
        extendsGenerics = new java.util.LinkedHashMap<Number, String>(this.extendsGenerics$key.size() < 1073741824 ? 1 + this.extendsGenerics$key.size() + (this.extendsGenerics$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
        for (int $i = 0; $i < this.extendsGenerics$key.size(); $i++) extendsGenerics.put(this.extendsGenerics$key.get($i), (String) this.extendsGenerics$value.get($i));
        extendsGenerics = java.util.Collections.unmodifiableMap(extendsGenerics);
      }
      return new SingularMap<A, B>(rawTypes, integers, generics, extendsGenerics);
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    public java.lang.String toString() {
      return "SingularMap.SingularMapBuilder(rawTypes$key=" + this.rawTypes$key + ", rawTypes$value=" + this.rawTypes$value + ", integers$key=" + this.integers$key + ", integers$value=" + this.integers$value + ", generics$key=" + this.generics$key + ", generics$value=" + this.generics$value + ", extendsGenerics$key=" + this.extendsGenerics$key + ", extendsGenerics$value=" + this.extendsGenerics$value + ")";
    }
  }

  @java.lang.SuppressWarnings("all")
  public static <A, B> SingularMap.SingularMapBuilder<A, B> builder() {
    return new SingularMap.SingularMapBuilder<A, B>();
  }
}
