@Override public MarkupLanguageConfiguration clone() { try { MarkupLanguageConfiguration copy = (MarkupLanguageConfiguration) super.clone(); copy.blocks = new ArrayList<Block>(blocks.size()); for (Block block : blocks) { copy.blocks.add(block.clone()); } copy.phraseModifiers = new ArrayList<PatternBasedElement>(phraseModifiers.size()); for (PatternBasedElement element : phraseModifiers) { copy.phraseModifiers.add(element.clone()); } copy.tokens = new ArrayList<PatternBasedElement>(tokens.size()); for (PatternBasedElement element : tokens) { copy.tokens.add(element.clone()); } return copy; } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } }