code: public ContextStack<T> copyPush(final T value) {
          final ContextStack<T> stack1 = copy();
          stack1.push(value);
          return stack1;
      }
docs: Return a new stack based with the same contents and one value pushed