public SingleTokenScanner(TextAttributeProvider textAttributeProvider, String attributeKey) {
   this.textAttributeProvider = textAttributeProvider;
   this.attributeKey = attributeKey;
   initialize();
   textAttributeProvider.addObserver(
       new Observer() {
         @Override
         public void update(Observable o, Object arg) {
           initialize();
         }
       });
 }
 public StoryTokenScanner(
     JBehaveProject jbehaveProject, TextAttributeProvider textAttributeProvider) {
   this.jbehaveProject = jbehaveProject;
   this.textAttributeProvider = textAttributeProvider;
   textAttributeProvider.addObserver(
       new Observer() {
         @Override
         public void update(Observable o, Object arg) {
           initialize();
         }
       });
 }
 private void initialize() {
   TextAttribute textAttribute = textAttributeProvider.get(attributeKey);
   setDefaultReturnToken(new Token(textAttribute));
 }
 /**
  * Create a new token whose data is the {@link TextAttribute} matching the given styleId.
  *
  * @param styleId
  * @return
  */
 protected Token newToken(String styleId) {
   TextAttribute textAttribute = textAttributeProvider.get(styleId);
   return new Token(textAttribute);
 }