Если вы собираетесь использовать конструктор копирования, вам нужно будет сделать глубокую копию каждой изменяемой переменной-члена.
Скажем, у вашего Literal есть переменные-члены, подобные этому:
private String[] args;
private String s;
Тогда ваш конструктор копирования должен будет сделать что-то вроде этого
public Literal(Literal l) {
// have to deep copy the array, otherwise both instances are sharing the reference
this.args = Arrays.copyOf(l.args, l.args.length);
// safe to just copy the reference, String is immutable
this.s = l.s;
}