private void setHiddenTokens(
     final Grammar copy,
     final Grammar orig,
     final Map<RuleWithParameterValues, AbstractRule> origToCopy) {
   if ((orig == null)) {
     copy.setDefinesHiddenTokens(true);
   } else {
     boolean _isDefinesHiddenTokens = orig.isDefinesHiddenTokens();
     boolean _not = (!_isDefinesHiddenTokens);
     if (_not) {
       EList<Grammar> _usedGrammars = orig.getUsedGrammars();
       Grammar _head = IterableExtensions.<Grammar>head(_usedGrammars);
       this.setHiddenTokens(copy, _head, origToCopy);
     } else {
       copy.setDefinesHiddenTokens(true);
       EList<AbstractRule> _hiddenTokens = copy.getHiddenTokens();
       EList<AbstractRule> _hiddenTokens_1 = orig.getHiddenTokens();
       final Function1<AbstractRule, AbstractRule> _function =
           (AbstractRule hidden) -> {
             RuleWithParameterValues _ruleWithParameterValues =
                 new RuleWithParameterValues(hidden);
             return origToCopy.get(_ruleWithParameterValues);
           };
       List<AbstractRule> _map =
           ListExtensions.<AbstractRule, AbstractRule>map(_hiddenTokens_1, _function);
       Iterables.<AbstractRule>addAll(_hiddenTokens, _map);
     }
   }
 }
 public List<String> initialHiddenTokens(final Grammar it) {
   List<String> _xblockexpression = null;
   {
     boolean _isDefinesHiddenTokens = it.isDefinesHiddenTokens();
     if (_isDefinesHiddenTokens) {
       EList<AbstractRule> _hiddenTokens = it.getHiddenTokens();
       final Function1<AbstractRule, String> _function =
           new Function1<AbstractRule, String>() {
             @Override
             public String apply(final AbstractRule it) {
               return GrammarAccessExtensions.this.ruleName(it);
             }
           };
       List<String> _map = ListExtensions.<AbstractRule, String>map(_hiddenTokens, _function);
       return IterableExtensions.<String>toList(_map);
     }
     EList<Grammar> _usedGrammars = it.getUsedGrammars();
     int _size = _usedGrammars.size();
     boolean _equals = (_size == 1);
     if (_equals) {
       EList<Grammar> _usedGrammars_1 = it.getUsedGrammars();
       Grammar _head = IterableExtensions.<Grammar>head(_usedGrammars_1);
       return this.initialHiddenTokens(_head);
     }
     _xblockexpression = CollectionLiterals.<String>emptyList();
   }
   return _xblockexpression;
 }