public void evaluateNode(InputSequence seq, int pos, int state, FeatureList result) {
   for (FeatureManagerNode fm : nodeFeatureTypes) {
     InputSequence componentSeq =
         fm.getInputComponent() == null ? seq : seq.getComponent(fm.getInputComponent());
     fm.evaluateNode(componentSeq, pos, state, result);
     if (!result.isValid()) break;
   }
 }
 public void evaluateEdgeLength(
     InputSequence seq, int pos, int length, int prevState, int state, FeatureList result) {
   Assert.a(length > 0);
   for (FeatureManagerEdgeExplicitLength fm : explicitLengthEdgeFeatureTypes) {
     InputSequence componentSeq =
         fm.getInputComponent() == null ? seq : seq.getComponent(fm.getInputComponent());
     fm.evaluateEdgeLength(componentSeq, pos, length, prevState, state, result);
     if (!result.isValid()) break;
   }
 }