return elem != null && (elem.toString().equals("B") || elem.toString().equals("D"));
}
});
}
};
SequenceSet seq = en.new SequenceSet();seq.setIdentity();
SequenceSet nodeD = seq.crossWithSet(Arrays.asList(new String[] {"b","a"}))
.crossWithSet(Arrays.asList(new String[] {"b","a"}));
PTASequenceEngine filtered = en.filter(en.getFSM_filterPredicate());
vertifyPTA(filtered, 2, new String[][] {
new String[] {"a","b"},
new String[] {"b","b"}
});
// now modify the original PTA
nodeD.crossWithSet(Arrays.asList(new String[]{"a","c"}));
vertifyPTA(en, 2, new String[][] {
new String[] {"a","b","c"},
new String[] {"b","b","c"}
});
// and check that filtered version is not affected
vertifyPTA(filtered, 2, new String[][] {
new String[] {"a","b"},
new String[] {"b","b"}
});
// now modify the filtered one
SequenceSet filteredSeqSet = filtered.new SequenceSet();filteredSeqSet.setIdentity();
filteredSeqSet.crossWithSequence(Arrays.asList(new String[]{"b","b","b","b"}));
// and check that the filtered one has been modified but the original one is unchanged
vertifyPTA(en, 2, new String[][] {
new String[] {"a","b","c"},
new String[] {"b","b","c"}
});