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