/**
   * @param inner The full inner class name
   * @param outer The full outer class name
   * @param name The simple name of the inner class, or null if anonymous
   * @param modifiers Modifiers for the inner class
   */
  public void addInnerClass(String inner, String outer, String name, Modifiers modifiers) {

    ConstantClassInfo innerInfo = ConstantClassInfo.make(mCp, inner);
    ConstantClassInfo outerInfo;
    if (outer == null) {
      outerInfo = null;
    } else {
      outerInfo = ConstantClassInfo.make(mCp, outer);
    }

    ConstantUTFInfo nameInfo;
    if (name == null) {
      nameInfo = null;
    } else {
      nameInfo = ConstantUTFInfo.make(mCp, name);
    }

    mInnerClasses.add(new Info(innerInfo, outerInfo, nameInfo, modifiers.getModifier()));
  }
    public void writeTo(DataOutput dout) throws IOException {
      if (mInner == null) {
        dout.writeShort(0);
      } else {
        dout.writeShort(mInner.getIndex());
      }

      if (mOuter == null) {
        dout.writeShort(0);
      } else {
        dout.writeShort(mOuter.getIndex());
      }

      if (mName == null) {
        dout.writeShort(0);
      } else {
        dout.writeShort(mName.getIndex());
      }

      dout.writeShort(mModifier);
    }