@Override
    public void addReference(IReferencable reference) {

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

      super.addReference(reference);
    }
    public ImplicitReferenceElement(IReferencable reference, Grammar grammar) {

      super(grammar);

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

      super.addReference(reference);
    }