code: public Label newLabel(Label oldLabel) {
      if (oldLabel instanceof HasTag) {
        return new WordTag(oldLabel.value(), ((HasTag) oldLabel).tag());
      } else {
        return new WordTag(oldLabel.value());
      }
    }
docs: Create a new <code>WordTag Label</code>, where the label is
  formed from
  the <code>Label</code> object passed in.  Depending on what fields
  each label has, other things will be <code>null</code>.
  
  @param oldLabel The Label that the new label is being created from
  @return a new label of a particular type