when<R> method

R when<R>({
  1. required R value(
    1. T value
    ),
  2. required R group(
    1. String label,
    2. List<CompositeNode<K, T>> items
    ),
})

Implementation

R when<R>({
  required R Function(T value) value,
  required R Function(String label, List<CompositeNode<K, T>> items) group,
}) {
  if (this is CompositeGroup<K, T>) {
    final groupNode = this as CompositeGroup<K, T>;
    return group(groupNode.label, groupNode.nodes.toList());
  } else {
    final valueNode = this as CompositeValue<K, T>;
    return value(valueNode.value);
  }
}