code: Item newConstItem(final Object cst) {
          if (cst instanceof Integer) {
              return newInteger((Integer) cst);
          } else if (cst instanceof Byte) {
              return newInteger((Byte) cst);
          } else if (cst instanceof Character) {
              return newInteger((Character) cst);
          } else if (cst instanceof Short) {
              return newInteger((Short) cst);
          } else if (cst instanceof Boolean) {
              return newInteger(((Boolean) cst) ? 1 : 0);
          } else if (cst instanceof Float) {
              return newFloat((Float) cst);
          } else if (cst instanceof Long) {
              return newLong((Long) cst);
          } else if (cst instanceof Double) {
              return newDouble((Double) cst);
          } else if (cst instanceof String) {
              return newString((String) cst);
          } else if (cst instanceof Item) {
              return (Item) cst;
          } else {
              throw new IllegalArgumentException("value " + cst);
          }
      }
docs: Adds a number or string constant to the constant pool of the class being build. Does nothing if the constant pool
  already contains a similar item.
  
  @param cst the value of the constant to be added to the constant pool. This parameter must be an
  {@link java.lang.Integer Integer}, a {@link
  java.lang.Float Float}, a {@link java.lang.Long Long}, a {@link
  java.lang.Double Double}, a {@link String String} or a {@link Type}.
  @return a new or already existing constant item with the given value.