class RelativeFile {

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof RelativeFile)) {
            return false;
        }

        RelativeFile other = (RelativeFile) obj;
        return Objects.equal(base, other.base)
                && Objects.equal(relativePath, other.relativePath)
                && Objects.equal(type, other.type);
    }

    public  RelativeFile(@NonNull File base, @NonNull File file);
    public  RelativeFile(@NonNull File base, @NonNull String relativePath);
    public  RelativeFile(@NonNull File base, @NonNull String relativePath, @NonNull Type type);

}