ArrayLiterals.java
package com.acme.arrays;

import church.lang.Array;
import church.lang.Array.$WriteElementsToStream;
import church.lang.Array.$WriteEmbracedElementsToStream;
import church.lang.ByteStream;
import church.lang.operators.Streams.$$encode;
import church.primitives.Integers;
import church.primitives.Objects;

import static church.lang.Array.array;
import static church.lang.operators.Streams.output;

@SuppressWarnings("unchecked")
public class ArrayLiterals {
    private static final $$encode<ByteStream, String>                                        $S0 = Objects::$encode;
    private static final $$encode<ByteStream, Integer>                                       $S1 = Integers::$encode;
    private static final $WriteElementsToStream<ByteStream, Integer>                         $S2 = Array.writeElementsToStream($S1, $S0);
    private static final $WriteEmbracedElementsToStream<ByteStream, Integer, String, String> $S3 = Array.writeEmbracedElementsToStream($S0, $S2, $S0);
    private static final $$encode<ByteStream, Integer[]>                                     $S4 = Array.$encode($S3);

    public static void main(String[] args) {
        Integer[] oneOrTheOther = true ? array(1, 2, 3) : array();
        $S0.$encode($S4.$encode(output, oneOrTheOther), "\n");
    }

}