@@ -0,0 +1,757 @@
+package com.github.nsnjson.encoding;%0A%0Aimport com.fasterxml.jackson.databind.JsonNode;%0Aimport com.fasterxml.jackson.databind.node.*;%0A%0Aimport java.util.Optional;%0A%0Apublic abstract class AbstractEncoding implements Encoding %7B%0A%0A    @Override%0A    public Optional%3CJsonNode%3E encode(JsonNode data) %7B%0A        switch (data.getNodeType()) %7B%0A            case NULL:    return encodeNull();%0A            case NUMBER:  return encodeNumber((NumericNode) data);%0A            case STRING:  return encodeString((TextNode) data);%0A            case BOOLEAN: return encodeBoolean((BooleanNode) data);%0A            case ARRAY:   return encodeArray((ArrayNode) data);%0A            case OBJECT:  return encodeObject((ObjectNode) data);%0A        %7D%0A%0A        return Optional.empty();%0A    %7D%0A%0A%7D

Implement AbstractEncoding