@Override
    public void addReference(Tree.TreeAlternative reference) {

      if (super.getReference() != null) {
        throw new InternalException("addReference shouldn't be used twice");
      }

      super.addReference(reference);
    }
    public ImplicitNewElement(
        Tree.TreeAlternative reference,
        Grammar grammar,
        List<AlternativeTransformationElement> transformationElements) {

      super(grammar);

      if (transformationElements == null) {
        throw new InternalException("transformationElements may not be null");
      }

      if (reference == null) {
        throw new InternalException("reference may not be null");
      }

      super.addReference(reference);
      this.transformationElements = transformationElements;
    }