@Override
    public boolean add(T e) {
        if (elements.add(e)) {
            ordered.add(e);
            return true;
        } else {
            return false;
        }
    }
@ Override public boolean add ( T e ) { if ( elements . add ( e ) ) { ordered . add ( e ) ; return true ; } else { return false ; } }
maintain the set so that it is easy to test membership, the list so that
there is a fixed order