public V extractValue(@NonNull Node node) { final Value val = node.getValue(keyword); if (val == null) { return null; } switch (type) { case STRING: return (V) ((StringValue) val).getString(); case SYMBOLIC: return (V) ((SymbolicValue) val).getSymbol(); case VECTOR: return (V) ((VectorialValue) val).getVector(); default: throw new IllegalArgumentException("Unsupported ValueType: " + type); } }