/*
 * ThingPark things management Networks API
 * REST interface for networks management. 
 *
 * The version of the OpenAPI document: 7.3
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

package lora.ns.actility.api.model.basestation;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * BsInt
 */
@JsonPropertyOrder({ BsInt.JSON_PROPERTY_ACTIVITY, BsInt.JSON_PROPERTY_DEV_ROUND_TRIP, BsInt.JSON_PROPERTY_STATE_SINCE,
    BsInt.JSON_PROPERTY_RX, BsInt.JSON_PROPERTY_TX, BsInt.JSON_PROPERTY_AVG_ROUND_TRIP, BsInt.JSON_PROPERTY_IP,
    BsInt.JSON_PROPERTY_NAME, BsInt.JSON_PROPERTY_TYPE, BsInt.JSON_PROPERTY_STATE, BsInt.JSON_PROPERTY_CONNECTION_TYPE,
    BsInt.JSON_PROPERTY_ICCID, BsInt.JSON_PROPERTY_IMEI, BsInt.JSON_PROPERTY_IMSI, BsInt.JSON_PROPERTY_NETWORK_OPERATOR,
    BsInt.JSON_PROPERTY_RSSI, BsInt.JSON_PROPERTY_RSCP, BsInt.JSON_PROPERTY_EC_IO, BsInt.JSON_PROPERTY_RSRP,
    BsInt.JSON_PROPERTY_RSRQ, BsInt.JSON_PROPERTY_SINR, BsInt.JSON_PROPERTY_SSID })
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2024-05-31T16:08:44.630492043+02:00[Europe/Paris]", comments = "Generator version: 7.6.0")
@JsonIgnoreProperties(value = "type", // ignore manually set type, it will be automatically generated by Jackson
                                      // during serialization
        allowSetters = true // allows the type to be set during deserialization
)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
@JsonSubTypes({ @JsonSubTypes.Type(value = BsIntEthernet.class, name = "ETHERNET"),
    @JsonSubTypes.Type(value = BsIntCellular.class, name = "GPRS"),
    @JsonSubTypes.Type(value = BsIntWlan.class, name = "WLAN"),
    @JsonSubTypes.Type(value = BsIntCellular.class, name = "BsIntCellular"),
    @JsonSubTypes.Type(value = BsIntEthernet.class, name = "BsIntEthernet"),
    @JsonSubTypes.Type(value = BsIntWlan.class, name = "BsIntWlan"), })

public class BsInt {
  public static final String JSON_PROPERTY_ACTIVITY = "activity";
  private Integer activity;

  public static final String JSON_PROPERTY_DEV_ROUND_TRIP = "devRoundTrip";
  private Integer devRoundTrip;

  public static final String JSON_PROPERTY_STATE_SINCE = "stateSince";
  private Long stateSince;

  public static final String JSON_PROPERTY_RX = "rx";
  private Object rx;

  public static final String JSON_PROPERTY_TX = "tx";
  private Object tx;

  public static final String JSON_PROPERTY_AVG_ROUND_TRIP = "avgRoundTrip";
  private Integer avgRoundTrip;

  public static final String JSON_PROPERTY_IP = "ip";
  private String ip;

  public static final String JSON_PROPERTY_NAME = "name";
  private String name;

  /**
   * Interface type
   */
  public enum TypeEnum {
    ETHERNET("ETHERNET"),

    GPRS("GPRS"),

    WLAN("WLAN");

    private String value;

    TypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static TypeEnum fromValue(String value) {
      for (TypeEnum b : TypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_TYPE = "type";
  protected TypeEnum type;

  public static final String JSON_PROPERTY_STATE = "state";
  private Integer state;

  /**
   * Cellular connection type
   */
  public enum ConnectionTypeEnum {
    _3G("3G"),

    _4G("4G");

    private String value;

    ConnectionTypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static ConnectionTypeEnum fromValue(String value) {
      for (ConnectionTypeEnum b : ConnectionTypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_CONNECTION_TYPE = "connectionType";
  private ConnectionTypeEnum connectionType;

  public static final String JSON_PROPERTY_ICCID = "iccid";
  private String iccid;

  public static final String JSON_PROPERTY_IMEI = "imei";
  private String imei;

  public static final String JSON_PROPERTY_IMSI = "imsi";
  private String imsi;

  public static final String JSON_PROPERTY_NETWORK_OPERATOR = "networkOperator";
  private String networkOperator;

  public static final String JSON_PROPERTY_RSSI = "rssi";
  private Float rssi;

  public static final String JSON_PROPERTY_RSCP = "rscp";
  private Float rscp;

  public static final String JSON_PROPERTY_EC_IO = "ecIo";
  private Float ecIo;

  public static final String JSON_PROPERTY_RSRP = "rsrp";
  private Float rsrp;

  public static final String JSON_PROPERTY_RSRQ = "rsrq";
  private Float rsrq;

  public static final String JSON_PROPERTY_SINR = "sinr";
  private Float sinr;

  public static final String JSON_PROPERTY_SSID = "ssid";
  private String ssid;

  public BsInt() {
  }

  public BsInt activity(Integer activity) {

    this.activity = activity;
    return this;
  }

  /**
   * Activity (second)
   * 
   * @return activity
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_ACTIVITY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Integer getActivity() {
    return activity;
  }

  @JsonProperty(JSON_PROPERTY_ACTIVITY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setActivity(Integer activity) {
    this.activity = activity;
  }

  public BsInt devRoundTrip(Integer devRoundTrip) {

    this.devRoundTrip = devRoundTrip;
    return this;
  }

  /**
   * Interface deviation round trip in ms
   * 
   * @return devRoundTrip
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_DEV_ROUND_TRIP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Integer getDevRoundTrip() {
    return devRoundTrip;
  }

  @JsonProperty(JSON_PROPERTY_DEV_ROUND_TRIP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setDevRoundTrip(Integer devRoundTrip) {
    this.devRoundTrip = devRoundTrip;
  }

  public BsInt stateSince(Long stateSince) {

    this.stateSince = stateSince;
    return this;
  }

  /**
   * Interface state since, epoch time in milliseconds
   * 
   * @return stateSince
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_STATE_SINCE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Long getStateSince() {
    return stateSince;
  }

  @JsonProperty(JSON_PROPERTY_STATE_SINCE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setStateSince(Long stateSince) {
    this.stateSince = stateSince;
  }

  public BsInt rx(Object rx) {

    this.rx = rx;
    return this;
  }

  /**
   * Get rx
   * 
   * @return rx
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RX)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Object getRx() {
    return rx;
  }

  @JsonProperty(JSON_PROPERTY_RX)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRx(Object rx) {
    this.rx = rx;
  }

  public BsInt tx(Object tx) {

    this.tx = tx;
    return this;
  }

  /**
   * Get tx
   * 
   * @return tx
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_TX)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Object getTx() {
    return tx;
  }

  @JsonProperty(JSON_PROPERTY_TX)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setTx(Object tx) {
    this.tx = tx;
  }

  public BsInt avgRoundTrip(Integer avgRoundTrip) {

    this.avgRoundTrip = avgRoundTrip;
    return this;
  }

  /**
   * Interface average round trip in ms
   * 
   * @return avgRoundTrip
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_AVG_ROUND_TRIP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Integer getAvgRoundTrip() {
    return avgRoundTrip;
  }

  @JsonProperty(JSON_PROPERTY_AVG_ROUND_TRIP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAvgRoundTrip(Integer avgRoundTrip) {
    this.avgRoundTrip = avgRoundTrip;
  }

  public BsInt ip(String ip) {

    this.ip = ip;
    return this;
  }

  /**
   * Interface IP address
   * 
   * @return ip
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_IP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getIp() {
    return ip;
  }

  @JsonProperty(JSON_PROPERTY_IP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setIp(String ip) {
    this.ip = ip;
  }

  public BsInt name(String name) {

    this.name = name;
    return this;
  }

  /**
   * Interface name
   * 
   * @return name
   **/
  @javax.annotation.Nonnull
  @JsonProperty(JSON_PROPERTY_NAME)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getName() {
    return name;
  }

  @JsonProperty(JSON_PROPERTY_NAME)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setName(String name) {
    this.name = name;
  }

  public BsInt type(TypeEnum type) {

    this.type = type;
    return this;
  }

  /**
   * Interface type
   * 
   * @return type
   **/
  @javax.annotation.Nonnull
  @JsonProperty(JSON_PROPERTY_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public TypeEnum getType() {
    return type;
  }

  @JsonProperty(JSON_PROPERTY_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setType(TypeEnum type) {
    this.type = type;
  }

  public BsInt state(Integer state) {

    this.state = state;
    return this;
  }

  /**
   * State for a WLAN interface: - Down / No started (5) - Up / SSID not found /
   * No sig. (4) - Up / No IP / No DHCP lease (3) - Up / Network down (2) - Up and
   * running (1) - Up / running and used (0) - Unknown because of disconnected
   * Base Station (null)
   * 
   * @return state
   **/
  @javax.annotation.Nonnull
  @JsonProperty(JSON_PROPERTY_STATE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public Integer getState() {
    return state;
  }

  @JsonProperty(JSON_PROPERTY_STATE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setState(Integer state) {
    this.state = state;
  }

  public BsInt connectionType(ConnectionTypeEnum connectionType) {

    this.connectionType = connectionType;
    return this;
  }

  /**
   * Cellular connection type
   * 
   * @return connectionType
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_CONNECTION_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public ConnectionTypeEnum getConnectionType() {
    return connectionType;
  }

  @JsonProperty(JSON_PROPERTY_CONNECTION_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setConnectionType(ConnectionTypeEnum connectionType) {
    this.connectionType = connectionType;
  }

  public BsInt iccid(String iccid) {

    this.iccid = iccid;
    return this;
  }

  /**
   * ICCID of the SIM card
   * 
   * @return iccid
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_ICCID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getIccid() {
    return iccid;
  }

  @JsonProperty(JSON_PROPERTY_ICCID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setIccid(String iccid) {
    this.iccid = iccid;
  }

  public BsInt imei(String imei) {

    this.imei = imei;
    return this;
  }

  /**
   * IMEI of the Base Station
   * 
   * @return imei
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_IMEI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getImei() {
    return imei;
  }

  @JsonProperty(JSON_PROPERTY_IMEI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setImei(String imei) {
    this.imei = imei;
  }

  public BsInt imsi(String imsi) {

    this.imsi = imsi;
    return this;
  }

  /**
   * IMSI of the SIM card
   * 
   * @return imsi
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_IMSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getImsi() {
    return imsi;
  }

  @JsonProperty(JSON_PROPERTY_IMSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setImsi(String imsi) {
    this.imsi = imsi;
  }

  public BsInt networkOperator(String networkOperator) {

    this.networkOperator = networkOperator;
    return this;
  }

  /**
   * Cellular network operator
   * 
   * @return networkOperator
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_NETWORK_OPERATOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getNetworkOperator() {
    return networkOperator;
  }

  @JsonProperty(JSON_PROPERTY_NETWORK_OPERATOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setNetworkOperator(String networkOperator) {
    this.networkOperator = networkOperator;
  }

  public BsInt rssi(Float rssi) {

    this.rssi = rssi;
    return this;
  }

  /**
   * WLAN RSSI in dBm
   * 
   * @return rssi
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRssi() {
    return rssi;
  }

  @JsonProperty(JSON_PROPERTY_RSSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRssi(Float rssi) {
    this.rssi = rssi;
  }

  public BsInt rscp(Float rscp) {

    this.rscp = rscp;
    return this;
  }

  /**
   * Cellular 3G RSCP in dBm
   * 
   * @return rscp
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSCP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRscp() {
    return rscp;
  }

  @JsonProperty(JSON_PROPERTY_RSCP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRscp(Float rscp) {
    this.rscp = rscp;
  }

  public BsInt ecIo(Float ecIo) {

    this.ecIo = ecIo;
    return this;
  }

  /**
   * Cellular 3G Ec/Io in dB
   * 
   * @return ecIo
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_EC_IO)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getEcIo() {
    return ecIo;
  }

  @JsonProperty(JSON_PROPERTY_EC_IO)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setEcIo(Float ecIo) {
    this.ecIo = ecIo;
  }

  public BsInt rsrp(Float rsrp) {

    this.rsrp = rsrp;
    return this;
  }

  /**
   * Cellular 4G RSRP in dBm
   * 
   * @return rsrp
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSRP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRsrp() {
    return rsrp;
  }

  @JsonProperty(JSON_PROPERTY_RSRP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRsrp(Float rsrp) {
    this.rsrp = rsrp;
  }

  public BsInt rsrq(Float rsrq) {

    this.rsrq = rsrq;
    return this;
  }

  /**
   * Cellular 4G RSRQ in dBm
   * 
   * @return rsrq
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSRQ)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRsrq() {
    return rsrq;
  }

  @JsonProperty(JSON_PROPERTY_RSRQ)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRsrq(Float rsrq) {
    this.rsrq = rsrq;
  }

  public BsInt sinr(Float sinr) {

    this.sinr = sinr;
    return this;
  }

  /**
   * Cellular 4G SINR in dB
   * 
   * @return sinr
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_SINR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getSinr() {
    return sinr;
  }

  @JsonProperty(JSON_PROPERTY_SINR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setSinr(Float sinr) {
    this.sinr = sinr;
  }

  public BsInt ssid(String ssid) {

    this.ssid = ssid;
    return this;
  }

  /**
   * SSID of WLAN network
   * 
   * @return ssid
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_SSID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getSsid() {
    return ssid;
  }

  @JsonProperty(JSON_PROPERTY_SSID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setSsid(String ssid) {
    this.ssid = ssid;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    BsInt bsInt = (BsInt) o;
    return Objects.equals(this.activity, bsInt.activity) && Objects.equals(this.devRoundTrip, bsInt.devRoundTrip)
            && Objects.equals(this.stateSince, bsInt.stateSince) && Objects.equals(this.rx, bsInt.rx)
            && Objects.equals(this.tx, bsInt.tx) && Objects.equals(this.avgRoundTrip, bsInt.avgRoundTrip)
            && Objects.equals(this.ip, bsInt.ip) && Objects.equals(this.name, bsInt.name)
            && Objects.equals(this.type, bsInt.type) && Objects.equals(this.state, bsInt.state)
            && Objects.equals(this.connectionType, bsInt.connectionType) && Objects.equals(this.iccid, bsInt.iccid)
            && Objects.equals(this.imei, bsInt.imei) && Objects.equals(this.imsi, bsInt.imsi)
            && Objects.equals(this.networkOperator, bsInt.networkOperator) && Objects.equals(this.rssi, bsInt.rssi)
            && Objects.equals(this.rscp, bsInt.rscp) && Objects.equals(this.ecIo, bsInt.ecIo)
            && Objects.equals(this.rsrp, bsInt.rsrp) && Objects.equals(this.rsrq, bsInt.rsrq)
            && Objects.equals(this.sinr, bsInt.sinr) && Objects.equals(this.ssid, bsInt.ssid);
  }

  @Override
  public int hashCode() {
    return Objects.hash(activity, devRoundTrip, stateSince, rx, tx, avgRoundTrip, ip, name, type, state, connectionType,
            iccid, imei, imsi, networkOperator, rssi, rscp, ecIo, rsrp, rsrq, sinr, ssid);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class BsInt {\n");
    sb.append("    activity: ").append(toIndentedString(activity)).append("\n");
    sb.append("    devRoundTrip: ").append(toIndentedString(devRoundTrip)).append("\n");
    sb.append("    stateSince: ").append(toIndentedString(stateSince)).append("\n");
    sb.append("    rx: ").append(toIndentedString(rx)).append("\n");
    sb.append("    tx: ").append(toIndentedString(tx)).append("\n");
    sb.append("    avgRoundTrip: ").append(toIndentedString(avgRoundTrip)).append("\n");
    sb.append("    ip: ").append(toIndentedString(ip)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    state: ").append(toIndentedString(state)).append("\n");
    sb.append("    connectionType: ").append(toIndentedString(connectionType)).append("\n");
    sb.append("    iccid: ").append(toIndentedString(iccid)).append("\n");
    sb.append("    imei: ").append(toIndentedString(imei)).append("\n");
    sb.append("    imsi: ").append(toIndentedString(imsi)).append("\n");
    sb.append("    networkOperator: ").append(toIndentedString(networkOperator)).append("\n");
    sb.append("    rssi: ").append(toIndentedString(rssi)).append("\n");
    sb.append("    rscp: ").append(toIndentedString(rscp)).append("\n");
    sb.append("    ecIo: ").append(toIndentedString(ecIo)).append("\n");
    sb.append("    rsrp: ").append(toIndentedString(rsrp)).append("\n");
    sb.append("    rsrq: ").append(toIndentedString(rsrq)).append("\n");
    sb.append("    sinr: ").append(toIndentedString(sinr)).append("\n");
    sb.append("    ssid: ").append(toIndentedString(ssid)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
