void pushInput(String ename) throws java.lang.Exception
    {
        Object input[] = new Object[12];

        // Check for entity recursion.
        if (ename != null) {
            Enumeration entities = entityStack.elements();
            while (entities.hasMoreElements()) {
                String e = (String) entities.nextElement();
                if (e == ename) {
                    error("recursive reference to entity", ename, null);
                }
            }
        }
        entityStack.push(ename);

        // Don't bother if there is no input.
        if (sourceType == INPUT_NONE) {
            return;
        }

        // Set up a snapshot of the current
        // input source.
        input[0] = new Integer(sourceType);
        input[1] = externalEntity;
        input[2] = readBuffer;
        input[3] = new Integer(readBufferPos);
        input[4] = new Integer(readBufferLength);
        input[5] = new Integer(line);
        input[6] = new Integer(encoding);
        input[7] = new Integer(readBufferOverflow);
        input[8] = is;
        input[9] = new Integer(currentByteCount);
        input[10] = new Integer(column);
        input[11] = reader;

        // Push it onto the stack.
        inputStack.push(input);
    }