Unzip.java
Created with JBuilder
package lrs.visitor;

import lrs.*;

/**
 * Unzips the host list so that it becomes the list that contains only the
 * even-indexed elements.
 * Returns the list holding the odd-indexed elements of the original host list.
 * @author DXN
 */
public class Unzip implements IAlgo {

    public static final Unzip Singleton = new Unzip();
    private Unzip() {
    }

    /**
     * The host stays empty.  The returned list is another empty list.
     * @param inp not used
     * @return an empty LRStruct
     */
    public Object emptyCase(LRStruct host, Object inp) {
        return new LRStruct();
    }

    /**
     * Recursively unzips the host's rest.  This should return the odd-indexed
     * elements of the orginal host's rest.  These elements are the elements
     * at index 2, 4, etc. of the orginal host list.  Set the host's rest to
     * this returned list.  The host list will then contains only the
     * even-indexed elements.
     * On the other hand, when the original host's rest is unzipped, it changes
     * and holds only its even-indexed elements.  These elements are precisely
     * the odd-indexed elements of the original host.  So just return the
     * original host's rest.
     * The code is simpler than its English description.
     * @param inp not used
     * @return LRStruct
     */
    public Object nonEmptyCase(LRStruct host, Object inp) {
        LRStruct hostRest = host.getRest();
        host.setRest((LRStruct)hostRest.execute(this, null));
        return hostRest;
    }
}

Unzip.java
Created with JBuilder