public <T extends Object> void forEach(final ITreeAppendable appendable, final Iterable<T> elements, final Procedure1<? super LoopParams> loopInitializer, final Procedure1<? super T> procedure) {
boolean _isEmpty = IterableExtensions.isEmpty(elements);
if (_isEmpty) {
return;
}
LoopParams _loopParams = new LoopParams();
final LoopParams params = ObjectExtensions.<LoopParams>operator_doubleArrow(_loopParams, loopInitializer);
params.appendPrefix(appendable);
T _head = IterableExtensions.<T>head(elements);
ObjectExtensions.<T>operator_doubleArrow(_head, procedure);
final Consumer<T> _function = (T it) -> {
params.appendSeparator(appendable);
ObjectExtensions.<T>operator_doubleArrow(it, procedure);
};
IterableExtensions.<T>tail(elements).forEach(_function);
params.appendSuffix(appendable);
}