@@ -0,0 +1,937 @@
+package com.github.nsnjson.decoding;%0A%0Aimport com.fasterxml.jackson.databind.JsonNode;%0Aimport com.fasterxml.jackson.databind.node.JsonNodeType;%0A%0Aimport java.util.Optional;%0A%0Apublic abstract class AbstractDecoding implements Decoding %7B%0A%0A    @Override%0A    public Optional%3CJsonNode%3E decode(JsonNode presentation) %7B%0A        Optional%3CJsonNodeType%3E typeOption = getType(presentation);%0A%0A        if (typeOption.isPresent()) %7B%0A            JsonNodeType type = typeOption.get();%0A%0A            switch (type) %7B%0A                case NULL:    return decodeNull();%0A                case NUMBER:  return decodeNumber(presentation);%0A                case STRING:  return decodeString(presentation);%0A                case BOOLEAN: return decodeBoolean(presentation);%0A                case ARRAY:   return decodeArray(presentation);%0A                case OBJECT:  return decodeObject(presentation);%0A            %7D%0A        %7D%0A%0A        return Optional.empty();%0A    %7D%0A%0A%7D

Implement AbstractDecoding