public boolean isBigIntegerSource(Term term) {
        boolean isBigInteger = term.asLiteral()
            .flatMap(LiteralConversions::asVariableLiteral)
            .flatMap(VariableLiteral::getChild)
            .map(Term.class::cast)
            .map(this::isBigIntegerSource)
            .orElse(false);
        return isBigInteger || term.asLiteral()
            .flatMap(LiteralConversions::asVariableLiteral)
            .map(VariableLiteral::getTypeReference)
            .flatMap(TypeReferenceConversions::asIntegerTypeReference)
            .map(integerTypeReference -> integerTypeReference.getSizeInBits() >= 64)
            .orElse(false);
    }
@param field               this generally only is needed in order to access field attributes such as encoding etc.
@param resultType          the type the resulting expression should have
@param term                the term representing the expression
@param serializerArguments any serializer arguments, which could be referenced in expressions (Needed for getting the type)
@return Java code which does the things defined in 'term'
code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java