### Question:
DefaultUpdateBuilder implements UpdateBuilder<T> { @Override public <U> UpdateBuilder<T> routingStage(UpdateStage afterStage, Processor<UpdateContext<U>> customStage) { return routingStage_NoGenerics(afterStage, customStage); } DefaultUpdateBuilder(
            UpdateContext<T> context,
            UpdateProcessorFactory processorFactory); @Override UpdateBuilder<T> uri(UriInfo uriInfo); @Override UpdateBuilder<T> id(Object id); @Override UpdateBuilder<T> id(Map<String, Object> ids); @Override UpdateBuilder<T> parent(Class<?> parentType, Object parentId, String relationshipFromParent); @Override UpdateBuilder<T> parent(Class<?> parentType, Map<String, Object> parentIds, String relationshipFromParent); @Override UpdateBuilder<T> readConstraint(Constraint<T> constraint); @Override UpdateBuilder<T> writeConstraint(Constraint<T> constraint); @Override UpdateBuilder<T> mapper(ObjectMapperFactory mapper); @Override UpdateBuilder<T> mapper(String propertyName); @Override UpdateBuilder<T> routingStage(UpdateStage afterStage, Processor<UpdateContext<U>> customStage); @Override UpdateBuilder<T> request(AgRequest agRequest); @Override SimpleResponse sync(String entityData); @Override SimpleResponse sync(EntityUpdate<T> update); @Override SimpleResponse sync(Collection<EntityUpdate<T>> updates); @Override DataResponse<T> syncAndSelect(String entityData); @Override DataResponse<T> syncAndSelect(Collection<EntityUpdate<T>> updates); @Override DataResponse<T> syncAndSelect(EntityUpdate<T> update);  }### Answer:
@Test public void testRoutingStage_FunctionTypes() { createBuilder(X.class) .routingStage(UpdateStage.PARSE_REQUEST, this::doSomethingAndReturn0) .routingStage(UpdateStage.PARSE_REQUEST, this::doSomethingAndReturn1) .routingStage(UpdateStage.PARSE_REQUEST, this::doSomethingAndReturn2) .routingStage(UpdateStage.PARSE_REQUEST, this::doSomethingAndReturn3) .routingStage(UpdateStage.PARSE_REQUEST, this::doSomethingAndReturn4) .routingStage(UpdateStage.PARSE_REQUEST, (UpdateContext<X> s) -> ProcessorOutcome.CONTINUE) .routingStage(UpdateStage.PARSE_REQUEST, s -> ProcessorOutcome.CONTINUE); }