package org.zwobble.couscous.transforms; import org.zwobble.couscous.ast.StatementNode; import org.zwobble.couscous.ast.visitors.NodeTransformer; import java.util.List; import java.util.Optional; import java.util.function.Function; class DesugarStatement { static NodeTransformer transformer(int nodeType, Function> desugar) { return NodeTransformer.builder() .transformStatement(statement -> { if (statement.type() == nodeType) { return Optional.of(desugar.apply((T) statement)); } else { return Optional.empty(); } }) .build(); } }