public String toString() {
   if (FListInteger.isEmpty(f)) {
     return "[" + x.toString() + "]";
   } else {
     return "[" + x.toString() + ", " + f.toString().substring(1, f.toString().length());
   }
 }
 FListInteger setMethod(int n, Integer y) {
   if (n == 0) {
     return FListInteger.add(f, y);
   } else {
     return FListInteger.add(FListInteger.set(f, n - 1, y), x);
   }
 }
 public boolean equals(Object o) {
   if (o instanceof FListInteger) {
     FListInteger f2 = (FListInteger) o;
     if (!(size(this) == size(f2))) {
       return false;
     }
     for (int i = 0; i < size(this); i++) {
       if (!(FListInteger.get(this, i).equals(FListInteger.get(f2, i)))) {
         return false;
       }
     }
     return true;
   } else {
     return false;
   }
 }
 Integer getMethod(int n) {
   if (n == 0) {
     return x;
   } else {
     return FListInteger.get(f, n - 1);
   }
 }
 boolean containsMethod(Integer y) {
   if (x.equals(y)) {
     return true;
   } else {
     return FListInteger.contains(f, y);
   }
 }
 public static FListInteger set(FListInteger f, int n, Integer y) {
   return f.setMethod(n, y);
 }
 public static Integer get(FListInteger f, int n) {
   return f.getMethod(n);
 }
 public static boolean contains(FListInteger f, Integer y) {
   return f.containsMethod(y);
 }
 public static boolean isEmpty(FListInteger f) {
   return f.isEmptyMethod();
 }
 public static int size(FListInteger f) {
   return f.sizeMethod();
 }
 int sizeMethod() {
   return 1 + FListInteger.size(f);
 }