package com.geth1b.coding.ds;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author geth1b
 */
public class NestedInteger {

  private final Integer val;
  private final List<NestedInteger> list;
  private final boolean isInteger;
  
  public NestedInteger() {
    val = null;
    isInteger = false;
    list = new ArrayList<>();
  }
  
  public NestedInteger(int x) {
    val = x;
    isInteger = true;
    list = null;
  }
  
  public NestedInteger(NestedInteger... nodes) {
    list = new ArrayList<>();
    list.addAll(Arrays.asList(nodes));
    val = null;
    isInteger = false;
  }
  
  public NestedInteger(int... nums) {
    list = new ArrayList<>();
    for (int x : nums) {
      list.add(new NestedInteger(x));
    }
    val = null;
    isInteger = false;
  }
  
  public static NestedInteger emptyList() {
    NestedInteger node = new NestedInteger(1,2,3);
    node.getList().clear();
    return node;
  }
  
  public void add(NestedInteger ne) {
    list.add(ne);
  }
  
  public boolean isInteger() {
    return isInteger;
  }
  
  public Integer getInteger() {
    return val;
  }
  
  public List<NestedInteger> getList() {
    return list;
  }
  
}
