MapLiteralInExpression.java
package com.acme.maps;

import church.lang.ByteStream;
import church.lang.Hash.$HashCode;
import church.lang.operators.Relational.$$equal;
import church.lang.operators.Streams.$$encode;
import church.primitives.Integers;
import church.primitives.Objects;
import church.util.HashMap;
import church.util.HashMap.$Map;
import church.util.HashMap.$OutEntry;

import static church.lang.operators.Streams.output;
import static church.util.Entry.entry;

@SuppressWarnings("unchecked")
public class MapLiteralInExpression {
    private static final $$encode<ByteStream, String>                   $S0 = Objects::$encode;
    private static final $$encode<ByteStream, Integer>                  $S1 = Integers::$encode;
    private static final $OutEntry<ByteStream, String, Integer>         $S2 = HashMap.outEntry($S1, $S0, $S0);
    private static final $$encode<ByteStream, HashMap<String, Integer>> $S3 = HashMap.$encode($S2);
    private static final $$equal<String>                                $S4 = Objects::$equal;
    private static final $HashCode<String>                              $S5 = Objects::hashCode;
    private static final $Map<String, Integer>                          $S6 = HashMap.map($S4, $S5);

    public static void main(String[] args) {
        $S0.$encode($S3.$encode(output, args.length == 0 ? $S6.map(entry("foo", 1), entry("bar", 2)) : $S6.map(entry("bar", 3), entry("baz", 4))), "\n");
    }

}