public static <T extends Document & HasName, D extends Document & HasName>
        String relativeName(
            D document,
            Class<T> from,
            Name name,
            UnaryOperator<String> nameMapper) {

        return relativeName(document, from, name, ".", nameMapper);
    }
Returns the relative name for the given Document up to the point given by
the parent Class by successively applying the provided nameMapper onto
the Node names.
<p>
For example, {@code relativeName(column, Dbms.class, DATABASE_NAME)}
would return the String "dbms_name.schema_name.table_name.column_name".

@param <T>        parent type
@param <D>        Document type
@param document   to use
@param from       class
@param name       if java or database name should be used
@param nameMapper to apply to all names encountered during traversal
@return           the relative name for this Node from the point given by the
                  parent Class
runtime-parent/runtime-config/src/main/java/com/speedment/runtime/config/util/DocumentUtil.java