@Override public BType getCollectionType(char typeChar, List<BType> memberTypes) { switch (typeChar) { case 'O': return new BUnionType(memberTypes); case 'P': return new BTupleType(memberTypes); default: throw new IllegalArgumentException("unsupported collection type char: " + typeChar); } }
@Override public BValue getNext() { if (cursor++ == collection.size()) { return null; } List<BType> types = new LinkedList<>(); types.add(BTypes.typeString); types.add(BTypes.typeAny); BTupleType tupleType = new BTupleType(types); Map.Entry<K, V> next = iterator.next(); BValueArray tuple = new BValueArray(tupleType); BString key = new BString((String) next.getKey()); tuple.add(0, key); BRefType value = (BRefType<?>) next.getValue(); tuple.add(1, value); return tuple; }