22
33import java .util .ArrayList ;
44import java .util .Iterator ;
5+ import java .util .LinkedHashMap ;
56import java .util .Map .Entry ;
67import java .util .stream .Collectors ;
78
2425public class VariationTreeAdapter <L extends Label > extends AbstractTree {
2526 private String cachedLabel ;
2627 private VariationNode <?, L > backingNode ;
28+ private LinkedHashMap <String , Object > metadata ;
2729
2830 public VariationTreeAdapter (VariationNode <?, L > node ) {
2931 this .backingNode = node ;
32+ this .metadata = new LinkedHashMap <>();
3033
3134 if (backingNode .isConditionalAnnotation ()) {
3235 cachedLabel = backingNode .getFormula ().toString ();
@@ -65,12 +68,12 @@ public int getLength() {
6568
6669 @ Override
6770 public Iterator <Entry <String , Object >> getMetadata () {
68- throw new UnsupportedOperationException ();
71+ return metadata . entrySet (). iterator ();
6972 }
7073
7174 @ Override
72- public Object getMetadata (String arg0 ) {
73- throw new UnsupportedOperationException ( );
75+ public Object getMetadata (String key ) {
76+ return metadata . get ( key );
7477 }
7578
7679 /**
@@ -97,8 +100,8 @@ public void setLength(int length) {
97100 }
98101
99102 @ Override
100- public Object setMetadata (String name , Object value ) {
101- throw new UnsupportedOperationException ( );
103+ public Object setMetadata (String key , Object value ) {
104+ return metadata . put ( key , value );
102105 }
103106
104107 @ Override
0 commit comments