@Override
 public void reflectWith(AttributeReflector reflector) {
   reflector.reflect(TermToBytesRefAttribute.class, "bytes", getBytesRef());
   reflector.reflect(NumericTermAttribute.class, "shift", shift);
   reflector.reflect(NumericTermAttribute.class, "rawValue", getRawValue());
   reflector.reflect(NumericTermAttribute.class, "valueSize", valueSize);
 }
 @Override
 public void reflectWith(AttributeReflector reflector) {
   String partOfSpeech = getPartOfSpeech();
   String partOfSpeechEN =
       partOfSpeech == null ? null : ToStringUtil.getPOSTranslation(partOfSpeech);
   reflector.reflect(PartOfSpeechAttribute.class, "partOfSpeech", partOfSpeech);
   reflector.reflect(PartOfSpeechAttribute.class, "partOfSpeech (en)", partOfSpeechEN);
 }
 @Override
 public void reflectWith(AttributeReflector reflector) {
   super.reflectWith(reflector);
   reflector.reflect(FlagsAttribute.class, "flags", flags);
   reflector.reflect(PayloadAttribute.class, "payload", payload);
 }
 @Override
 public void reflectWith(AttributeReflector reflector) {
   fillBytesRef();
   reflector.reflect(TermToBytesRefAttribute.class, "bytes", BytesRef.deepCopyOf(bytes));
 }
 @Override
 public void reflectWith(AttributeReflector reflector) {
   reflector.reflect(BasicFormAttribute.class, "basicForm", getBasicForm());
 }
 @Override
 public void reflectWith(AttributeReflector reflector) {
   reflector.reflect(MorphosyntacticTagsAttribute.class, "tags", tags);
 }