public Type getDefaultOutputType() {
        Class<?> parent = module;
        Class<?> child = module.getSuperclass();
        while (child != null) {
            // TODO Fix me.
            if (child.equals(ModuleBase.class)) {
                return ((ParameterizedType) parent.getGenericSuperclass()).getActualTypeArguments()[1];
            }
            parent = child;
            child = child.getSuperclass();
        }

        // UAhhh. This class is not subclass of IVertex.
        throw new RuntimeException("Bug: The class is not subclass of IVertex: " + module);
    }